Commit 90f41b1d by Wyh

1、凍鏈PRJ

2、外送代碼優化
3、prj打印頁數問題處理
4、供應鏈代碼提交
parent 36307038
...@@ -58,7 +58,6 @@ dependencies { ...@@ -58,7 +58,6 @@ dependencies {
//lombok //lombok
implementation 'org.projectlombok:lombok:1.18.10' implementation 'org.projectlombok:lombok:1.18.10'
annotationProcessor 'org.projectlombok:lombok:1.18.10' annotationProcessor 'org.projectlombok:lombok:1.18.10'
} }
//此文件是作为组件化配置的公共gradle脚本文件,在每个组件中都apply此文件,下载到工程根目录后,可以在下方添加一些自己工程中通用的配置 //此文件是作为组件化配置的公共gradle脚本文件,在每个组件中都apply此文件,下载到工程根目录后,可以在下方添加一些自己工程中通用的配置
......
...@@ -31,6 +31,9 @@ android { ...@@ -31,6 +31,9 @@ android {
dataBinding { dataBinding {
enabled = true enabled = true
} }
// viewBinding {
// enabled = true
// }
resourcePrefix "coldChain" resourcePrefix "coldChain"
buildTypes { buildTypes {
debug { debug {
......
...@@ -7,6 +7,7 @@ import com.gingersoft.coldchain_module.mvp.model.bean.ShipAnyOrdersNewBean; ...@@ -7,6 +7,7 @@ import com.gingersoft.coldchain_module.mvp.model.bean.ShipAnyOrdersNewBean;
import com.gingersoft.coldchain_module.mvp.model.bean.SupplementInfoBean; import com.gingersoft.coldchain_module.mvp.model.bean.SupplementInfoBean;
import com.gingersoft.coldchain_module.mvp.model.bean.UpdateOrderStatusBean; import com.gingersoft.coldchain_module.mvp.model.bean.UpdateOrderStatusBean;
import com.gingersoft.coldchain_module.mvp.model.bean.UpdateRestaurantStateBean; import com.gingersoft.coldchain_module.mvp.model.bean.UpdateRestaurantStateBean;
import com.gingersoft.gsa.cloud.common.bean.BaseResult;
import com.gingersoft.gsa.cloud.common.core.delivery.OrderDetails; import com.gingersoft.gsa.cloud.common.core.delivery.OrderDetails;
import com.jess.arms.mvp.IModel; import com.jess.arms.mvp.IModel;
import com.jess.arms.mvp.IView; import com.jess.arms.mvp.IView;
...@@ -47,7 +48,7 @@ public interface ColdChainMainContract { ...@@ -47,7 +48,7 @@ public interface ColdChainMainContract {
Observable<UpdateOrderStatusBean> updateOrderStatus(RequestBody requestBody); Observable<UpdateOrderStatusBean> updateOrderStatus(RequestBody requestBody);
Observable<String> addPrj(RequestBody requestBody); Observable<BaseResult> addPrj(RequestBody requestBody);
} }
} }
...@@ -37,7 +37,7 @@ public interface OrderDetailsContract { ...@@ -37,7 +37,7 @@ public interface OrderDetailsContract {
Observable<ReadBean> setIsRead(RequestBody requestBody); Observable<ReadBean> setIsRead(RequestBody requestBody);
Observable<String> addPrj(RequestBody requestBody); Observable<BaseResult> addPrj(RequestBody requestBody);
Observable<BaseResult> updatePrintPdfStatus(RequestBody requestBody); Observable<BaseResult> updatePrintPdfStatus(RequestBody requestBody);
} }
......
...@@ -3,6 +3,7 @@ package com.gingersoft.coldchain_module.mvp.contract; ...@@ -3,6 +3,7 @@ package com.gingersoft.coldchain_module.mvp.contract;
import com.gingersoft.coldchain_module.mvp.model.bean.OrderList; import com.gingersoft.coldchain_module.mvp.model.bean.OrderList;
import com.gingersoft.coldchain_module.mvp.model.bean.ShipAnyOrdersNewBean; import com.gingersoft.coldchain_module.mvp.model.bean.ShipAnyOrdersNewBean;
import com.gingersoft.coldchain_module.mvp.model.bean.UpdateOrderStatusBean; import com.gingersoft.coldchain_module.mvp.model.bean.UpdateOrderStatusBean;
import com.gingersoft.gsa.cloud.common.bean.BaseResult;
import com.gingersoft.gsa.cloud.common.core.delivery.OrderDetails; import com.gingersoft.gsa.cloud.common.core.delivery.OrderDetails;
import com.jess.arms.mvp.IModel; import com.jess.arms.mvp.IModel;
import com.jess.arms.mvp.IView; import com.jess.arms.mvp.IView;
...@@ -24,7 +25,7 @@ public interface OrderListContract { ...@@ -24,7 +25,7 @@ public interface OrderListContract {
void loadOrderTotalNum(OrderList.DataBeanX.DataBean bean); void loadOrderTotalNum(OrderList.DataBeanX.DataBean bean);
void getOrderDetails(OrderDetails.DataBean dataBean); // void getOrderDetails(OrderDetails.DataBean dataBean);
} }
...@@ -38,6 +39,6 @@ public interface OrderListContract { ...@@ -38,6 +39,6 @@ public interface OrderListContract {
Observable<UpdateOrderStatusBean> updateOrderStatus(RequestBody requestBody); Observable<UpdateOrderStatusBean> updateOrderStatus(RequestBody requestBody);
Observable<String> addPrj(RequestBody requestBody); Observable<BaseResult> addPrj(RequestBody requestBody);
} }
} }
...@@ -12,6 +12,7 @@ import com.gingersoft.coldchain_module.mvp.model.bean.UpdateOrderStatusBean; ...@@ -12,6 +12,7 @@ import com.gingersoft.coldchain_module.mvp.model.bean.UpdateOrderStatusBean;
import com.gingersoft.coldchain_module.mvp.model.bean.UpdateRestaurantStateBean; import com.gingersoft.coldchain_module.mvp.model.bean.UpdateRestaurantStateBean;
import com.gingersoft.coldchain_module.mvp.model.service.ColdChainService; import com.gingersoft.coldchain_module.mvp.model.service.ColdChainService;
import com.gingersoft.coldchain_module.mvp.model.service.OrderDetailService; import com.gingersoft.coldchain_module.mvp.model.service.OrderDetailService;
import com.gingersoft.gsa.cloud.common.bean.BaseResult;
import com.gingersoft.gsa.cloud.common.core.delivery.OrderDetails; import com.gingersoft.gsa.cloud.common.core.delivery.OrderDetails;
import com.google.gson.Gson; import com.google.gson.Gson;
import com.jess.arms.di.scope.ActivityScope; import com.jess.arms.di.scope.ActivityScope;
...@@ -89,7 +90,7 @@ public class ColdChainMainModel extends BaseModel implements ColdChainMainContra ...@@ -89,7 +90,7 @@ public class ColdChainMainModel extends BaseModel implements ColdChainMainContra
} }
@Override @Override
public Observable<String> addPrj(RequestBody requestBody) { public Observable<BaseResult> addPrj(RequestBody requestBody) {
return mRepositoryManager.obtainRetrofitService(OrderDetailService.class).addPrj(requestBody); return mRepositoryManager.obtainRetrofitService(OrderDetailService.class).addPrj(requestBody);
} }
......
...@@ -66,7 +66,7 @@ public class OrderDetailsModel extends BaseModel implements OrderDetailsContract ...@@ -66,7 +66,7 @@ public class OrderDetailsModel extends BaseModel implements OrderDetailsContract
} }
@Override @Override
public Observable<String> addPrj(RequestBody requestBody) { public Observable<BaseResult> addPrj(RequestBody requestBody) {
return mRepositoryManager.obtainRetrofitService(OrderDetailService.class).addPrj(requestBody); return mRepositoryManager.obtainRetrofitService(OrderDetailService.class).addPrj(requestBody);
} }
......
...@@ -8,6 +8,7 @@ import com.gingersoft.coldchain_module.mvp.model.bean.ShipAnyOrdersNewBean; ...@@ -8,6 +8,7 @@ import com.gingersoft.coldchain_module.mvp.model.bean.ShipAnyOrdersNewBean;
import com.gingersoft.coldchain_module.mvp.model.bean.UpdateOrderStatusBean; import com.gingersoft.coldchain_module.mvp.model.bean.UpdateOrderStatusBean;
import com.gingersoft.coldchain_module.mvp.model.service.ColdChainService; import com.gingersoft.coldchain_module.mvp.model.service.ColdChainService;
import com.gingersoft.coldchain_module.mvp.model.service.OrderDetailService; import com.gingersoft.coldchain_module.mvp.model.service.OrderDetailService;
import com.gingersoft.gsa.cloud.common.bean.BaseResult;
import com.gingersoft.gsa.cloud.common.core.delivery.OrderDetails; import com.gingersoft.gsa.cloud.common.core.delivery.OrderDetails;
import com.google.gson.Gson; import com.google.gson.Gson;
import com.jess.arms.di.scope.FragmentScope; import com.jess.arms.di.scope.FragmentScope;
...@@ -60,7 +61,7 @@ public class OrderListModel extends BaseModel implements OrderListContract.Model ...@@ -60,7 +61,7 @@ public class OrderListModel extends BaseModel implements OrderListContract.Model
} }
@Override @Override
public Observable<String> addPrj(RequestBody requestBody) { public Observable<BaseResult> addPrj(RequestBody requestBody) {
return mRepositoryManager.obtainRetrofitService(OrderDetailService.class).addPrj(requestBody); return mRepositoryManager.obtainRetrofitService(OrderDetailService.class).addPrj(requestBody);
} }
} }
\ No newline at end of file
...@@ -41,7 +41,7 @@ public interface OrderDetailService { ...@@ -41,7 +41,7 @@ public interface OrderDetailService {
Observable<CancelLogisticsBean> cancelLogistics(@Body RequestBody requestBody); Observable<CancelLogisticsBean> cancelLogistics(@Body RequestBody requestBody);
@POST("printerRecording/add" + RetrofitUrlManager.IDENTIFICATION_PATH_SIZE + 2) @POST("printerRecording/add" + RetrofitUrlManager.IDENTIFICATION_PATH_SIZE + 2)
Observable<String> addPrj(@Body RequestBody requestBody); Observable<BaseResult> addPrj(@Body RequestBody requestBody);
@Headers({"Domain-Name: ricepon_gsa"}) @Headers({"Domain-Name: ricepon_gsa"})
@POST("shipanyTransportOrderInfo/update" + RetrofitUrlManager.IDENTIFICATION_PATH_SIZE + 2) @POST("shipanyTransportOrderInfo/update" + RetrofitUrlManager.IDENTIFICATION_PATH_SIZE + 2)
......
package com.gingersoft.coldchain_module.mvp.presenter; package com.gingersoft.coldchain_module.mvp.presenter;
import android.app.Application; import android.app.Application;
import android.util.Log;
import com.gingersoft.coldchain_module.mvp.constans.ColdChainConstants; import com.gingersoft.coldchain_module.mvp.constans.ColdChainConstants;
import com.gingersoft.coldchain_module.mvp.contract.ColdChainMainContract; import com.gingersoft.coldchain_module.mvp.contract.ColdChainMainContract;
...@@ -31,9 +32,11 @@ import java.util.List; ...@@ -31,9 +32,11 @@ import java.util.List;
import javax.inject.Inject; import javax.inject.Inject;
import io.reactivex.Observer;
import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.annotations.NonNull; import io.reactivex.annotations.NonNull;
import io.reactivex.disposables.Disposable; import io.reactivex.disposables.Disposable;
import io.reactivex.functions.Consumer;
import io.reactivex.schedulers.Schedulers; import io.reactivex.schedulers.Schedulers;
import me.jessyan.rxerrorhandler.core.RxErrorHandler; import me.jessyan.rxerrorhandler.core.RxErrorHandler;
import me.jessyan.rxerrorhandler.handler.ErrorHandleSubscriber; import me.jessyan.rxerrorhandler.handler.ErrorHandleSubscriber;
...@@ -209,16 +212,12 @@ public class ColdChainMainPresenter extends BasePresenter<ColdChainMainContract. ...@@ -209,16 +212,12 @@ public class ColdChainMainPresenter extends BasePresenter<ColdChainMainContract.
}); });
} }
private List<Integer> ids;
private Disposable autoDisposable; private Disposable autoDisposable;
private boolean isAutoReceiving;
public void stopAutoReceivingOrders() { public void stopAutoReceivingOrders() {
if (autoDisposable != null) { if (autoDisposable != null) {
autoDisposable.dispose(); autoDisposable.dispose();
} }
errorCount = 6;
isAutoReceiving = false;
} }
/** /**
...@@ -227,11 +226,6 @@ public class ColdChainMainPresenter extends BasePresenter<ColdChainMainContract. ...@@ -227,11 +226,6 @@ public class ColdChainMainPresenter extends BasePresenter<ColdChainMainContract.
* @param restaurantId * @param restaurantId
*/ */
public void startToBeConfirmedOrderList(int restaurantId) { public void startToBeConfirmedOrderList(int restaurantId) {
if (autoDisposable != null && (!autoDisposable.isDisposed() || !isAutoReceiving)) {
return;
}
isAutoReceiving = true;
errorCount = 0;
RequestBody requestBody = new FormBody.Builder() RequestBody requestBody = new FormBody.Builder()
.add("restaurantId", restaurantId + "") .add("restaurantId", restaurantId + "")
.add("page", "0") .add("page", "0")
...@@ -261,14 +255,11 @@ public class ColdChainMainPresenter extends BasePresenter<ColdChainMainContract. ...@@ -261,14 +255,11 @@ public class ColdChainMainPresenter extends BasePresenter<ColdChainMainContract.
if (info != null && info.isSuccess() && info.getData() != null) { if (info != null && info.isSuccess() && info.getData() != null) {
if (info.getData().getData() != null && info.getData().getData().size() > 0) { if (info.getData().getData() != null && info.getData().getData().size() > 0) {
List<OrderList.DataBeanX.DataBean> dataBeans = info.getData().getData(); List<OrderList.DataBeanX.DataBean> dataBeans = info.getData().getData();
//移除掉其他信息
dataBeans.remove(dataBeans.size() - 1); dataBeans.remove(dataBeans.size() - 1);
ids = new ArrayList<>(); if (dataBeans.size() > 0) {
for (int i = 0; i < dataBeans.size(); i++) { //獲取訂單詳情
ids.add(dataBeans.get(i).getId()); findOrderDetails(dataBeans.get(0).getId());
}
if (ids.size() > 0) {
findOrderDetails(ids.get(0));
ids.remove(0);
} }
} }
} }
...@@ -276,10 +267,11 @@ public class ColdChainMainPresenter extends BasePresenter<ColdChainMainContract. ...@@ -276,10 +267,11 @@ public class ColdChainMainPresenter extends BasePresenter<ColdChainMainContract.
}); });
} }
/**
* 獲取訂單詳情
*/
public void findOrderDetails(int orderId) { public void findOrderDetails(int orderId) {
if (!isAutoReceiving) {
return;
}
//startTime endTime //mRootView.showLoading("獲取訂單詳情...") mRootView.hideLoading() //startTime endTime //mRootView.showLoading("獲取訂單詳情...") mRootView.hideLoading()
RequestBody requestBody = new FormBody.Builder() RequestBody requestBody = new FormBody.Builder()
.add("orderId", orderId + "") .add("orderId", orderId + "")
...@@ -303,30 +295,21 @@ public class ColdChainMainPresenter extends BasePresenter<ColdChainMainContract. ...@@ -303,30 +295,21 @@ public class ColdChainMainPresenter extends BasePresenter<ColdChainMainContract.
@Override @Override
public void onNext(@NonNull OrderDetails info) { public void onNext(@NonNull OrderDetails info) {
if (info != null && info.getData() != null && info.getData().size() > 0) { if (info != null && info.getData() != null && info.getData().size() > 0) {
//第三方配送
thirdDelivery(info.getData().get(0)); thirdDelivery(info.getData().get(0));
} else {
if (errorCount < maxErrorCount) {
startToBeConfirmedOrderList(RestaurantInfoManager.newInstance().getRestaurantId());
errorCount++;
}
} }
} }
}); });
} }
private int errorCount = 0;
private int maxErrorCount = 5;
/** /**
* 指派到第三方物流配送 * 指派到第三方物流配送
*
* @param dataBean * @param dataBean
*/ */
public void thirdDelivery(OrderDetails.DataBean dataBean) { public void thirdDelivery(OrderDetails.DataBean dataBean) {
if (!isAutoReceiving) {
return;
}
//驗證訂單金額是否正確 //驗證訂單金額是否正確
if(OrderDetails.verificationAmount(dataBean)){ if (OrderDetails.verificationAmount(dataBean)) {
return; return;
} }
ThirdItem third = new ThirdItem(); ThirdItem third = new ThirdItem();
...@@ -358,32 +341,24 @@ public class ColdChainMainPresenter extends BasePresenter<ColdChainMainContract. ...@@ -358,32 +341,24 @@ public class ColdChainMainPresenter extends BasePresenter<ColdChainMainContract.
.compose(RxLifecycleUtils.bindToLifecycle(mRootView)) .compose(RxLifecycleUtils.bindToLifecycle(mRootView))
.subscribe(new ErrorHandleSubscriber<ShipAnyOrdersNewBean>(mErrorHandler) { .subscribe(new ErrorHandleSubscriber<ShipAnyOrdersNewBean>(mErrorHandler) {
@Override @Override
public void onSubscribe(Disposable d) {
super.onSubscribe(d);
autoDisposable = d;
}
@Override
public void onNext(@NonNull ShipAnyOrdersNewBean info) { public void onNext(@NonNull ShipAnyOrdersNewBean info) {
if (info != null && info.isSuccess()) { if (info != null && info.isSuccess()) {
//修改訂單狀態 //修改訂單狀態
updateOrderState(dataBean, ColdChainConstants.ORDER_CONFIRMED); updateOrderState(dataBean, ColdChainConstants.ORDER_CONFIRMED);
} else {
if (errorCount < 5) {
thirdDelivery(dataBean);
errorCount++;
}
} }
} }
}); });
} }
/**
* 修改訂單狀態
*
* @param dataBean
* @param status
*/
public void updateOrderState(OrderDetails.DataBean dataBean, int status) { public void updateOrderState(OrderDetails.DataBean dataBean, int status) {
if (!isAutoReceiving) {
return;
}
//驗證訂單金額是否正確 //驗證訂單金額是否正確
if(OrderDetails.verificationAmount(dataBean)){ if (OrderDetails.verificationAmount(dataBean)) {
return; return;
} }
//添加PRJ //添加PRJ
...@@ -403,21 +378,8 @@ public class ColdChainMainPresenter extends BasePresenter<ColdChainMainContract. ...@@ -403,21 +378,8 @@ public class ColdChainMainPresenter extends BasePresenter<ColdChainMainContract.
.compose(RxLifecycleUtils.bindToLifecycle(mRootView)) .compose(RxLifecycleUtils.bindToLifecycle(mRootView))
.subscribe(new ErrorHandleSubscriber<UpdateOrderStatusBean>(mErrorHandler) { .subscribe(new ErrorHandleSubscriber<UpdateOrderStatusBean>(mErrorHandler) {
@Override @Override
public void onSubscribe(Disposable d) {
super.onSubscribe(d);
autoDisposable = d;
}
@Override
public void onNext(@NonNull UpdateOrderStatusBean info) { public void onNext(@NonNull UpdateOrderStatusBean info) {
errorCount = 0;
mRootView.refreshOrderState(dataBean.getID()); mRootView.refreshOrderState(dataBean.getID());
if (ids != null && ids.size() > 0) {
findOrderDetails(ids.get(0));
ids.remove(0);
} else {
startToBeConfirmedOrderList(RestaurantInfoManager.newInstance().getRestaurantId());
}
} }
}); });
} }
...@@ -429,9 +391,11 @@ public class ColdChainMainPresenter extends BasePresenter<ColdChainMainContract. ...@@ -429,9 +391,11 @@ public class ColdChainMainPresenter extends BasePresenter<ColdChainMainContract.
if (productnameBean.getChild() != null) { if (productnameBean.getChild() != null) {
for (OrderDetails.DataBean.PRODUCTNAMEBean.ChildBeanX childBeanX : productnameBean.getChild()) { for (OrderDetails.DataBean.PRODUCTNAMEBean.ChildBeanX childBeanX : productnameBean.getChild()) {
if (childBeanX != null) { if (childBeanX != null) {
for (OrderDetails.DataBean.PRODUCTNAMEBean.ChildBeanX.ChildBean childBean : childBeanX.getChild()) { if (childBeanX.getChild() != null) {
ids.append(childBean.getOdsId()); for (OrderDetails.DataBean.PRODUCTNAMEBean.ChildBeanX.ChildBean childBean : childBeanX.getChild()) {
ids.append(","); ids.append(childBean.getOdsId());
ids.append(",");
}
} }
ids.append(childBeanX.getOdsId()); ids.append(childBeanX.getOdsId());
ids.append(","); ids.append(",");
...@@ -446,7 +410,8 @@ public class ColdChainMainPresenter extends BasePresenter<ColdChainMainContract. ...@@ -446,7 +410,8 @@ public class ColdChainMainPresenter extends BasePresenter<ColdChainMainContract.
.add("restaurantId", RestaurantInfoManager.newInstance().getRestaurantId() + "") .add("restaurantId", RestaurantInfoManager.newInstance().getRestaurantId() + "")
.add("orderDetailsIds", ids.toString()) .add("orderDetailsIds", ids.toString())
.build(); .build();
mModel.addPrj(requestBody); Disposable subscribe = mModel.addPrj(requestBody)
.subscribeOn(Schedulers.io()).subscribe(s -> {});
} }
} }
......
...@@ -146,7 +146,7 @@ public class OrderDetailsPresenter extends BasePresenter<OrderDetailsContract.Mo ...@@ -146,7 +146,7 @@ public class OrderDetailsPresenter extends BasePresenter<OrderDetailsContract.Mo
public void thirdDelivery(OrderDetails.DataBean dataBean) { public void thirdDelivery(OrderDetails.DataBean dataBean) {
//驗證訂單金額是否正確 //驗證訂單金額是否正確
if(OrderDetails.verificationAmount(dataBean)){ if (OrderDetails.verificationAmount(dataBean)) {
mRootView.showMessage(OrderDetails.getVerifiAmountTip()); mRootView.showMessage(OrderDetails.getVerifiAmountTip());
return; return;
} }
...@@ -208,7 +208,7 @@ public class OrderDetailsPresenter extends BasePresenter<OrderDetailsContract.Mo ...@@ -208,7 +208,7 @@ public class OrderDetailsPresenter extends BasePresenter<OrderDetailsContract.Mo
public void updateOrderState(OrderDetails.DataBean dataBean, int status, String labUrl) { public void updateOrderState(OrderDetails.DataBean dataBean, int status, String labUrl) {
//驗證訂單金額是否正確 //驗證訂單金額是否正確
if(OrderDetails.verificationAmount(dataBean)){ if (OrderDetails.verificationAmount(dataBean)) {
mRootView.showMessage(OrderDetails.getVerifiAmountTip()); mRootView.showMessage(OrderDetails.getVerifiAmountTip());
return; return;
} }
...@@ -254,26 +254,28 @@ public class OrderDetailsPresenter extends BasePresenter<OrderDetailsContract.Mo ...@@ -254,26 +254,28 @@ public class OrderDetailsPresenter extends BasePresenter<OrderDetailsContract.Mo
@Override @Override
public void onError(Throwable t) { public void onError(Throwable t) {
super.onError(t); super.onError(t);
mRootView.showMessage(t.getMessage()); mRootView.showMessage(t.getMessage() + "");
mRootView.killMyself(); mRootView.killMyself();
} }
}); });
} }
public void addPrj(OrderDetails.DataBean dataBean) { public void addPrj(OrderDetails.DataBean dataBean) {
StringBuffer ids = new StringBuffer(); StringBuilder ids = new StringBuilder();
if (dataBean.getPRODUCT_NAME() != null) { if (dataBean.getPRODUCT_NAME() != null) {
for (OrderDetails.DataBean.PRODUCTNAMEBean productnameBean : dataBean.getPRODUCT_NAME()) { for (OrderDetails.DataBean.PRODUCTNAMEBean productnameBean : dataBean.getPRODUCT_NAME()) {
if (productnameBean.getChild() != null) { if (productnameBean.getChild() != null) {
for (OrderDetails.DataBean.PRODUCTNAMEBean.ChildBeanX childBeanX : productnameBean.getChild()) { for (OrderDetails.DataBean.PRODUCTNAMEBean.ChildBeanX childBeanX : productnameBean.getChild()) {
if (childBeanX != null) { if (childBeanX != null) {
for (OrderDetails.DataBean.PRODUCTNAMEBean.ChildBeanX.ChildBean childBean : childBeanX.getChild()) { if (childBeanX.getChild() != null) {
ids.append(childBean.getOdsId()); for (OrderDetails.DataBean.PRODUCTNAMEBean.ChildBeanX.ChildBean childBean : childBeanX.getChild()) {
ids.append(","); ids.append(childBean.getOdsId());
ids.append(",");
}
} }
ids.append(childBeanX.getOdsId());
ids.append(",");
} }
ids.append(childBeanX.getOdsId());
ids.append(",");
} }
} }
ids.append(productnameBean.getOdsId()); ids.append(productnameBean.getOdsId());
...@@ -284,7 +286,8 @@ public class OrderDetailsPresenter extends BasePresenter<OrderDetailsContract.Mo ...@@ -284,7 +286,8 @@ public class OrderDetailsPresenter extends BasePresenter<OrderDetailsContract.Mo
.add("restaurantId", RestaurantInfoManager.newInstance().getRestaurantId() + "") .add("restaurantId", RestaurantInfoManager.newInstance().getRestaurantId() + "")
.add("orderDetailsIds", ids.toString()) .add("orderDetailsIds", ids.toString())
.build(); .build();
mModel.addPrj(requestBody); Disposable subscribe = mModel.addPrj(requestBody)
.subscribeOn(Schedulers.io()).subscribe(s -> {});
} }
} }
......
...@@ -53,6 +53,9 @@ import com.qmuiteam.qmui.util.QMUIDisplayHelper; ...@@ -53,6 +53,9 @@ import com.qmuiteam.qmui.util.QMUIDisplayHelper;
import com.qmuiteam.qmui.widget.QMUITopBar; import com.qmuiteam.qmui.widget.QMUITopBar;
import com.qmuiteam.qmui.widget.popup.QMUIPopup; import com.qmuiteam.qmui.widget.popup.QMUIPopup;
import com.qmuiteam.qmui.widget.popup.QMUIPopups; import com.qmuiteam.qmui.widget.popup.QMUIPopups;
import com.xuexiang.rxutil2.exception.RxException;
import com.xuexiang.rxutil2.rxjava.RxJavaUtils;
import com.xuexiang.rxutil2.subsciber.BaseSubscriber;
import java.lang.reflect.Method; import java.lang.reflect.Method;
import java.util.ArrayList; import java.util.ArrayList;
...@@ -65,6 +68,7 @@ import butterknife.OnClick; ...@@ -65,6 +68,7 @@ import butterknife.OnClick;
import io.reactivex.Observable; import io.reactivex.Observable;
import io.reactivex.Observer; import io.reactivex.Observer;
import io.reactivex.disposables.Disposable; import io.reactivex.disposables.Disposable;
import io.reactivex.functions.Consumer;
import io.reactivex.schedulers.Schedulers; import io.reactivex.schedulers.Schedulers;
import static androidx.fragment.app.FragmentStatePagerAdapter.BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT; import static androidx.fragment.app.FragmentStatePagerAdapter.BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT;
...@@ -98,6 +102,8 @@ public class ColdChainMainActivity extends BaseFragmentActivity<ColdChainMainPre ...@@ -98,6 +102,8 @@ public class ColdChainMainActivity extends BaseFragmentActivity<ColdChainMainPre
@BindView(R2.id.cb_auto_receiving_orders) @BindView(R2.id.cb_auto_receiving_orders)
CheckBox autoReceivingOrders; CheckBox autoReceivingOrders;
private final int autoReceivingOrderInterval = 15;
public void setOrderNum(OrderList.DataBeanX.DataBean bean) { public void setOrderNum(OrderList.DataBeanX.DataBean bean) {
mTakeAwayPb.setMax(bean.getMaxOrder() == 0 ? 1 : bean.getMaxOrder()); mTakeAwayPb.setMax(bean.getMaxOrder() == 0 ? 1 : bean.getMaxOrder());
mTakeAwayPb.setProgress(bean.getNum()); mTakeAwayPb.setProgress(bean.getNum());
...@@ -161,32 +167,12 @@ public class ColdChainMainActivity extends BaseFragmentActivity<ColdChainMainPre ...@@ -161,32 +167,12 @@ public class ColdChainMainActivity extends BaseFragmentActivity<ColdChainMainPre
if (autoOrderDisposable != null && !autoOrderDisposable.isDisposed()) { if (autoOrderDisposable != null && !autoOrderDisposable.isDisposed()) {
autoOrderDisposable.dispose(); autoOrderDisposable.dispose();
} }
Observable.timer(1, TimeUnit.SECONDS).subscribeOn(Schedulers.io()).subscribe(new Observer<Long>() { if (isChecked) {
@Override //開始自動接單
public void onSubscribe(Disposable d) { autoOrderDisposable = RxJavaUtils.polling(1, autoReceivingOrderInterval, aLong -> mPresenter.startToBeConfirmedOrderList(restaurantId));
autoOrderDisposable = d; } else {
} mPresenter.stopAutoReceivingOrders();
}
@Override
public void onNext(Long aLong) {
// mPresenter.updateExpandInfo(ExpandConstant.FrozenChainAutoOrder, new String[]{RestaurantExpandInfoUtils.VALUE_INT}, new String[]{RestaurantExpandInfoUtils.getValue(ExpandConstant.FrozenChainAutoOrder, false) ? "0" : "1"});
if (!isChecked) {
mPresenter.stopAutoReceivingOrders();
} else {
mPresenter.startToBeConfirmedOrderList(restaurantId);
}
}
@Override
public void onError(Throwable e) {
}
@Override
public void onComplete() {
}
});
}); });
} }
......
...@@ -10,12 +10,14 @@ import android.view.KeyEvent; ...@@ -10,12 +10,14 @@ import android.view.KeyEvent;
import android.view.View; import android.view.View;
import android.widget.LinearLayout; import android.widget.LinearLayout;
import android.widget.TextView; import android.widget.TextView;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import androidx.core.content.ContextCompat; import androidx.core.content.ContextCompat;
import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView; import androidx.recyclerview.widget.RecyclerView;
import com.gingersoft.coldchain_module.R; import com.gingersoft.coldchain_module.R;
import com.gingersoft.coldchain_module.R2; import com.gingersoft.coldchain_module.R2;
import com.gingersoft.coldchain_module.di.component.DaggerOrderDetailsComponent; import com.gingersoft.coldchain_module.di.component.DaggerOrderDetailsComponent;
...@@ -231,7 +233,9 @@ public class OrderDetailsActivity extends BaseActivity<OrderDetailsPresenter> im ...@@ -231,7 +233,9 @@ public class OrderDetailsActivity extends BaseActivity<OrderDetailsPresenter> im
} }
mTvOrderNo.setText(getResources().getString(R.string.order_no) + bean.getORDER_NO()); mTvOrderNo.setText(getResources().getString(R.string.order_no) + bean.getORDER_NO());
mTvCreateTime.setText(getResources().getString(R.string.create_order_time) + TimeUtils.parseTimeRepeat(bean.getCREATE_TIME(), TimeUtils.DEFAULT_DATE_FORMAT)); mTvCreateTime.setText(getResources().getString(R.string.create_order_time) + TimeUtils.parseTimeRepeat(bean.getCREATE_TIME(), TimeUtils.DEFAULT_DATE_FORMAT));
mTvReceiver.setText(bean.getRECEIVER()); if(TextUtil.isNotEmptyOrNullOrUndefined(bean.getRECEIVER())) {
mTvReceiver.setText(bean.getRECEIVER());
}
mTvOrderNum.setText(bean.getBillNo()); mTvOrderNum.setText(bean.getBillNo());
mTvReceiverPhone.setText(bean.getPHONE()); mTvReceiverPhone.setText(bean.getPHONE());
mTvReceiverTime.setText(TextUtil.isNotEmptyOrNullOrUndefined(bean.getTakeTime()) ? bean.getTakeTime() : bean.getSEND_TIME()); mTvReceiverTime.setText(TextUtil.isNotEmptyOrNullOrUndefined(bean.getTakeTime()) ? bean.getTakeTime() : bean.getSEND_TIME());
...@@ -260,7 +264,7 @@ public class OrderDetailsActivity extends BaseActivity<OrderDetailsPresenter> im ...@@ -260,7 +264,7 @@ public class OrderDetailsActivity extends BaseActivity<OrderDetailsPresenter> im
} }
} }
mTvTotalAmount2.setText(amountUnit + totalAmount); mTvTotalAmount2.setText(amountUnit + totalAmount);
mTvPayAmount.setText(amountUnit + totalAmount); mTvPayAmount.setText(amountUnit + bean.getPAY_AMOUNT());
if (bean.getOrderPayType() == 2 && bean.getPayMultiple() != null) { if (bean.getOrderPayType() == 2 && bean.getPayMultiple() != null) {
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
......
...@@ -260,14 +260,14 @@ public class OrderListFragment extends BaseFragment<OrderListPresenter> implemen ...@@ -260,14 +260,14 @@ public class OrderListFragment extends BaseFragment<OrderListPresenter> implemen
} }
} }
@Override // @Override
public void getOrderDetails(OrderDetails.DataBean dataBean) { // public void getOrderDetails(OrderDetails.DataBean dataBean) {
if (getActivity() instanceof ColdChainMainActivity && ((ColdChainMainActivity) getActivity()).isAutoReceivingOrder()) { // if (getActivity() instanceof ColdChainMainActivity && ((ColdChainMainActivity) getActivity()).isAutoReceivingOrder()) {
if (dataBean.getOrderStatus() == 0 || dataBean.getOrderStatus() == 1) { // if (dataBean.getOrderStatus() == 0 || dataBean.getOrderStatus() == 1) {
mPresenter.thirdDelivery(dataBean); // mPresenter.thirdDelivery(dataBean);
} // }
} // }
} // }
private void notifyActivityOrderNum() { private void notifyActivityOrderNum() {
if (getActivity() instanceof ColdChainMainActivity) { if (getActivity() instanceof ColdChainMainActivity) {
......
...@@ -27,6 +27,9 @@ android { ...@@ -27,6 +27,9 @@ android {
dataBinding { dataBinding {
enabled = true enabled = true
} }
// viewBinding {
// enabled = true
// }
buildTypes { buildTypes {
debug { debug {
buildConfigField "boolean", "LOG_DEBUG", "true" buildConfigField "boolean", "LOG_DEBUG", "true"
......
...@@ -413,15 +413,15 @@ class PageViewModel(private val repository: WeatherRepository) : ViewModel() { ...@@ -413,15 +413,15 @@ class PageViewModel(private val repository: WeatherRepository) : ViewModel() {
} }
launch({ launch({
when (dataBean.companyType) { when (dataBean.companyType) {
0 -> { OrderDetails.ourStoreDistribution -> {
//本店 //本店
updateOrderAndPrint(restaurantId, dataBean, status, isPrintPrj, listener) updateOrderAndPrint(restaurantId, dataBean, status, isPrintPrj, listener)
} }
1 -> { OrderDetails.zeekDistribution -> {
//zeek //zeek
thirdSend(restaurantId, dataBean, trafficType, status, isPrintPrj, isPrintBill, listener) thirdSend(restaurantId, dataBean, trafficType, status, isPrintPrj, isPrintBill, listener)
} }
2 -> { OrderDetails.lalamoveDistribution -> {
//lalamove //lalamove
thirdSend(restaurantId, dataBean, trafficType, status, isPrintPrj, isPrintBill, listener) thirdSend(restaurantId, dataBean, trafficType, status, isPrintPrj, isPrintBill, listener)
} }
...@@ -484,7 +484,7 @@ class PageViewModel(private val repository: WeatherRepository) : ViewModel() { ...@@ -484,7 +484,7 @@ class PageViewModel(private val repository: WeatherRepository) : ViewModel() {
payMethods.forEach { payMethods.forEach {
payMultiple.add(OrderDetails.DataBean.PayMultiple(it.id.toString(), it.payMoney, it.payName, 0.0)) payMultiple.add(OrderDetails.DataBean.PayMultiple(it.id.toString(), it.payMoney, it.payName, 0.0))
} }
repository.updateOrderPay(orderDetails.ID, 4, orderDetails.order_type, 3, orderPayInfoVO = payMultiple).apply { repository.updateOrderPay(orderDetails.ID, OrderDetails.closingAmount, orderDetails.order_type, 3, orderPayInfoVO = payMultiple).apply {
orderDetails.payMultiple = payMultiple orderDetails.payMultiple = payMultiple
orderDetails.payTime = TimeUtils.getCurrentTimeInString(TimeUtils.DEFAULT_DATE_FORMAT) orderDetails.payTime = TimeUtils.getCurrentTimeInString(TimeUtils.DEFAULT_DATE_FORMAT)
val bean = GsonUtils.GsonToBean(GsonUtils.GsonString(data), OrderClosingBean::class.java) val bean = GsonUtils.GsonToBean(GsonUtils.GsonString(data), OrderClosingBean::class.java)
...@@ -498,7 +498,6 @@ class PageViewModel(private val repository: WeatherRepository) : ViewModel() { ...@@ -498,7 +498,6 @@ class PageViewModel(private val repository: WeatherRepository) : ViewModel() {
}, { }, {
listener.invoke(OrderDelivery, false) listener.invoke(OrderDelivery, false)
it.printStackTrace() it.printStackTrace()
// integralBean.postValue(null)
}) })
} }
...@@ -510,7 +509,7 @@ class PageViewModel(private val repository: WeatherRepository) : ViewModel() { ...@@ -510,7 +509,7 @@ class PageViewModel(private val repository: WeatherRepository) : ViewModel() {
return return
} }
launch({ launch({
repository.gsUpdateOrderStatus(orderDetails.ID, 4, orderDetails.order_type, 3, orderFrom = 0).apply { repository.gsUpdateOrderStatus(orderDetails.ID, OrderDetails.closingAmount, orderDetails.order_type, 3, orderFrom = 0).apply {
if (orderPayInfoVO != null && orderPayInfoVO.isNotEmpty()) { if (orderPayInfoVO != null && orderPayInfoVO.isNotEmpty()) {
orderDetails.payMultiple = orderPayInfoVO orderDetails.payMultiple = orderPayInfoVO
} }
......
...@@ -156,7 +156,7 @@ class OrderDetailsActivity : BaseActivity<IPresenter>() { ...@@ -156,7 +156,7 @@ class OrderDetailsActivity : BaseActivity<IPresenter>() {
val orderStatusText: String val orderStatusText: String
val type = if (orderDetails.order_type == 7) "自取" else "外送" val type = if (orderDetails.order_type == 7) "自取" else "外送"
when (orderDetails.orderStatus) { when (orderDetails.orderStatus) {
2 -> {//製作中 OrderDetails.inProduction -> {//製作中
//製作中訂單狀態為2,但是列表中的狀態為0的話,可能是調用了指派物流,沒修改訂單狀態 //製作中訂單狀態為2,但是列表中的狀態為0的話,可能是調用了指派物流,沒修改訂單狀態
if (state == 0) { if (state == 0) {
//防止調用了第三方物流接口,沒調用到確認訂單接口 //防止調用了第三方物流接口,沒調用到確認訂單接口
...@@ -180,7 +180,7 @@ class OrderDetailsActivity : BaseActivity<IPresenter>() { ...@@ -180,7 +180,7 @@ class OrderDetailsActivity : BaseActivity<IPresenter>() {
btnBuilder.getPrintBtn()?.let { btnBuilder.getPrintBtn()?.let {
btnList.add(it) btnList.add(it)
} }
if (orderDetails.order_type == 7) { if (orderDetails.order_type == OrderDetails.yourselfPickUp) {
//製作中的自取,應該製作完成、打印、取消訂單 //製作中的自取,應該製作完成、打印、取消訂單
btnBuilder.getProductionCompletedBtn()?.let { btnBuilder.getProductionCompletedBtn()?.let {
btnList.add(it) btnList.add(it)
...@@ -188,18 +188,18 @@ class OrderDetailsActivity : BaseActivity<IPresenter>() { ...@@ -188,18 +188,18 @@ class OrderDetailsActivity : BaseActivity<IPresenter>() {
tv_order_state.setTextColor(getCustomColor(R.color.order_state0_color)) tv_order_state.setTextColor(getCustomColor(R.color.order_state0_color))
} else { } else {
//製作中的外賣,應該有打印、取消物流、取消訂單 //製作中的外賣,應該有打印、取消物流、取消訂單
if (orderDetails.isDelete == 0) { if (orderDetails.isDelete == OrderDetails.thirdPartyDistribution) {
btnBuilder.getLogisticsBtn()?.let { btnBuilder.getLogisticsBtn()?.let {
btnList.add(it) btnList.add(it)
} }
if (isTimeOut && orderDetails.companyType == 2) { if (isTimeOut && orderDetails.companyType == OrderDetails.lalamoveDistribution) {
//已超時,添加追加貼士的按鈕 //已超時,添加追加貼士的按鈕
btnBuilder.getAdditionalServiceChargeBtn()?.let { btnBuilder.getAdditionalServiceChargeBtn()?.let {
btnList.add(it) btnList.add(it)
} }
} }
} else { } else {
if (orderDetails.companyType == 2) { if (orderDetails.companyType == OrderDetails.lalamoveDistribution) {
btnBuilder.getTransportationBtn()?.let { btnBuilder.getTransportationBtn()?.let {
btnList.add(it) btnList.add(it)
} }
...@@ -216,11 +216,11 @@ class OrderDetailsActivity : BaseActivity<IPresenter>() { ...@@ -216,11 +216,11 @@ class OrderDetailsActivity : BaseActivity<IPresenter>() {
btnList.add(it) btnList.add(it)
} }
} }
3 -> {//外賣是送貨中,自取是待取餐 OrderDetails.appointDelivery -> {//外賣是送貨中,自取是待取餐
btnBuilder.getPrintBtn()?.let { btnBuilder.getPrintBtn()?.let {
btnList.add(it) btnList.add(it)
} }
if (orderDetails.order_type == 7) { if (orderDetails.order_type == OrderDetails.yourselfPickUp) {
//自取待取餐,有打印和結賬 //自取待取餐,有打印和結賬
orderStatusText = "待取餐" orderStatusText = "待取餐"
btnBuilder.getClosingBtn()?.let { btnBuilder.getClosingBtn()?.let {
...@@ -231,7 +231,7 @@ class OrderDetailsActivity : BaseActivity<IPresenter>() { ...@@ -231,7 +231,7 @@ class OrderDetailsActivity : BaseActivity<IPresenter>() {
// 外賣有打印 // 外賣有打印
// 如果是第三方物流,不顯示結賬 // 如果是第三方物流,不顯示結賬
// 如果是本店配送,有結賬按鈕 // 如果是本店配送,有結賬按鈕
if (orderDetails.isDelete == 0) { if (orderDetails.isDelete == OrderDetails.thirdPartyDistribution) {
//如果是第三方物流,不顯示結賬按鈕 //如果是第三方物流,不顯示結賬按鈕
} else { } else {
btnBuilder.getAssignDeliveryBtn()?.let { btnBuilder.getAssignDeliveryBtn()?.let {
...@@ -245,7 +245,7 @@ class OrderDetailsActivity : BaseActivity<IPresenter>() { ...@@ -245,7 +245,7 @@ class OrderDetailsActivity : BaseActivity<IPresenter>() {
tv_order_state.setTextColor(getCustomColor(R.color.order_state2_color)) tv_order_state.setTextColor(getCustomColor(R.color.order_state2_color))
} }
} }
8 -> {//預約單 OrderDetails.bookingOrder -> {//預約單
if (!isBookingOrder) { if (!isBookingOrder) {
btnBuilder.getSureBtn()?.let { btnBuilder.getSureBtn()?.let {
btnList.add(it) btnList.add(it)
...@@ -270,7 +270,7 @@ class OrderDetailsActivity : BaseActivity<IPresenter>() { ...@@ -270,7 +270,7 @@ class OrderDetailsActivity : BaseActivity<IPresenter>() {
tv_order_state.setTextColor(ContextCompat.getColor(this@OrderDetailsActivity, R.color.order_state0_color)) tv_order_state.setTextColor(ContextCompat.getColor(this@OrderDetailsActivity, R.color.order_state0_color))
} }
} }
if (orderDetails.orderPayType == 2 && orderDetails.payMultiple != null) { if (orderDetails.orderPayType == OrderDetails.onLinePay && orderDetails.payMultiple != null) {
val sb = StringBuilder() val sb = StringBuilder()
for (value in orderDetails.payMultiple!!) { for (value in orderDetails.payMultiple!!) {
sb.append(value.payName) sb.append(value.payName)
...@@ -330,7 +330,7 @@ class OrderDetailsActivity : BaseActivity<IPresenter>() { ...@@ -330,7 +330,7 @@ class OrderDetailsActivity : BaseActivity<IPresenter>() {
cancelLogistics(orderDetails) cancelLogistics(orderDetails)
BtnBuilder.AssignDeliveryBtn -> BtnBuilder.AssignDeliveryBtn ->
//指派送貨 //指派送貨
selectorDelivery(this@OrderDetailsActivity, orderDetails, 3) { _, _ -> finish() } selectorDelivery(this@OrderDetailsActivity, orderDetails, OrderDetails.appointDelivery) { _, _ -> finish() }
BtnBuilder.CancelBtn -> BtnBuilder.CancelBtn ->
//取消訂單 //取消訂單
cancelOrder(orderDetails) cancelOrder(orderDetails)
...@@ -347,8 +347,9 @@ class OrderDetailsActivity : BaseActivity<IPresenter>() { ...@@ -347,8 +347,9 @@ class OrderDetailsActivity : BaseActivity<IPresenter>() {
} }
} }
BtnBuilder.ClosingBtn -> { BtnBuilder.ClosingBtn -> {
//如果是在線支付的訂單,就直接修改訂單狀態 //只要不是貨到付款
if (orderPayType != 1) { if (orderPayType != OrderDetails.payOnDelivery) {
//如果是在線支付的訂單,就直接修改訂單狀態
gsUpdateOrderStatus(orderDetails, null) { errorCode, isSuccess -> gsUpdateOrderStatus(orderDetails, null) { errorCode, isSuccess ->
when { when {
isSuccess -> { isSuccess -> {
...@@ -363,6 +364,7 @@ class OrderDetailsActivity : BaseActivity<IPresenter>() { ...@@ -363,6 +364,7 @@ class OrderDetailsActivity : BaseActivity<IPresenter>() {
} }
} }
} else { } else {
//跳轉到結賬頁面
if (OrderDetails.verificationAmount(orderDetails)) { if (OrderDetails.verificationAmount(orderDetails)) {
ToastUtils.show(this@OrderDetailsActivity, verifiAmountTip) ToastUtils.show(this@OrderDetailsActivity, verifiAmountTip)
return@setOnItemClickListener return@setOnItemClickListener
...@@ -378,17 +380,17 @@ class OrderDetailsActivity : BaseActivity<IPresenter>() { ...@@ -378,17 +380,17 @@ class OrderDetailsActivity : BaseActivity<IPresenter>() {
updateOrderAndPrint(restaurantId, orderDetails, 8, false, listener) updateOrderAndPrint(restaurantId, orderDetails, 8, false, listener)
} else { } else {
//確認訂單,判斷是本店還是zeek或是lalamove //確認訂單,判斷是本店還是zeek或是lalamove
if (orderDetails.order_type == 7) { if (orderDetails.order_type == OrderDetails.yourselfPickUp) {
//如果是自取單,將物流類型改為本店 //如果是自取單,將物流類型改為本店
orderDetails.companyType = 0 orderDetails.companyType = OrderDetails.ourStoreDistribution
} }
when (orderDetails.companyType) { when (orderDetails.companyType) {
0, 1 -> { OrderDetails.ourStoreDistribution, OrderDetails.zeekDistribution -> {
//本店配送和zeek //本店配送和zeek
confirmOrder(orderDetails) confirmOrder(orderDetails)
} }
2 -> { OrderDetails.lalamoveDistribution -> {
//lalamove //lalamove
selectLalaMove(orderDetails, true) { it, orderDetails -> selectLalaMove(orderDetails, true) { it, orderDetails ->
showIsUpdateTransportation(it, orderDetails, true) showIsUpdateTransportation(it, orderDetails, true)
...@@ -404,7 +406,7 @@ class OrderDetailsActivity : BaseActivity<IPresenter>() { ...@@ -404,7 +406,7 @@ class OrderDetailsActivity : BaseActivity<IPresenter>() {
} }
BtnBuilder.ProductionCompletedBtn -> { BtnBuilder.ProductionCompletedBtn -> {
//製作完成 //製作完成
updateOrderAndPrint(restaurantId, orderDetails, 3) { updateOrderAndPrint(restaurantId, orderDetails, OrderDetails.appointDelivery) {
if (it.success) { if (it.success) {
finish() finish()
} }
......
...@@ -33,7 +33,7 @@ ...@@ -33,7 +33,7 @@
android:id="@+id/tv_dialog_confirm" android:id="@+id/tv_dialog_confirm"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:background="@drawable/shape_red_five_radius_bg" android:background="@drawable/shape_red_seven_radius_bg"
android:paddingLeft="@dimen/dp_28" android:paddingLeft="@dimen/dp_28"
android:paddingTop="@dimen/dp_10" android:paddingTop="@dimen/dp_10"
android:paddingRight="@dimen/dp_28" android:paddingRight="@dimen/dp_28"
......
...@@ -118,3 +118,6 @@ ...@@ -118,3 +118,6 @@
} }
-keep public class * implements java.io.Serializable {*;} -keep public class * implements java.io.Serializable {*;}
#xpopup
-dontwarn com.lxj.xpopup.widget.**
-keep class com.lxj.xpopup.widget.**{*;}
...@@ -30,7 +30,9 @@ android { ...@@ -30,7 +30,9 @@ android {
} }
} }
} }
// viewBinding {
// enabled = true
// }
resourcePrefix "main" resourcePrefix "main"
buildTypes { buildTypes {
......
...@@ -242,7 +242,7 @@ public class SettlementReportPresenter extends BasePresenter<SettlementReportCon ...@@ -242,7 +242,7 @@ public class SettlementReportPresenter extends BasePresenter<SettlementReportCon
dialogBuilder.setTitleIcon(com.gingersoft.gsa.cloud.common.R.drawable.qmui_icon_dialog_doubt); dialogBuilder.setTitleIcon(com.gingersoft.gsa.cloud.common.R.drawable.qmui_icon_dialog_doubt);
dialogBuilder.setMessage(msg); dialogBuilder.setMessage(msg);
dialogBuilder.setCancelable(true); dialogBuilder.setCancelable(true);
dialogBuilder.addAction(com.gingersoft.gsa.cloud.common.R.drawable.shape_red_five_radius_bg, "是", QMUIDialogAction.ACTION_PROP_NEGATIVE, (dialog, index) -> { dialogBuilder.addAction(com.gingersoft.gsa.cloud.common.R.drawable.shape_red_seven_radius_bg, "是", QMUIDialogAction.ACTION_PROP_NEGATIVE, (dialog, index) -> {
dialog.dismiss(); dialog.dismiss();
sendSettlement(SettlementReportActivity.merge_settlement_type_2); sendSettlement(SettlementReportActivity.merge_settlement_type_2);
}); });
......
...@@ -12,6 +12,7 @@ import org.jetbrains.annotations.NotNull; ...@@ -12,6 +12,7 @@ import org.jetbrains.annotations.NotNull;
/** /**
* @author admin * @author admin
* 跳轉到別的頁面
*/ */
public class SelectItemProvider extends FoodMenuItemProvider { public class SelectItemProvider extends FoodMenuItemProvider {
private Context context; private Context context;
......
...@@ -358,7 +358,7 @@ public class PrjService extends Service implements ReceiveListener { ...@@ -358,7 +358,7 @@ public class PrjService extends Service implements ReceiveListener {
if (datas != null && datas.size() > 0) { if (datas != null && datas.size() > 0) {
//打印位置和需要打印的數據 //打印位置和需要打印的數據
listMap.put(key, datas); listMap.put(key, datas);
//有沒有不需要切紙的 //計算本次打印的prj總張數有沒有不需要切紙的
boolean isHasNoCut = false; boolean isHasNoCut = false;
for (PrjBean.DataBean.Bean bean : datas) { for (PrjBean.DataBean.Bean bean : datas) {
if (bean.getStatus() == 2) { if (bean.getStatus() == 2) {
...@@ -384,14 +384,22 @@ public class PrjService extends Service implements ReceiveListener { ...@@ -384,14 +384,22 @@ public class PrjService extends Service implements ReceiveListener {
private Map<String, List<PrjBean.DataBean.Bean>> setPrjIndex(Map<String, List<PrjBean.DataBean.Bean>> listMap, int totalPrj) { private Map<String, List<PrjBean.DataBean.Bean>> setPrjIndex(Map<String, List<PrjBean.DataBean.Bean>> listMap, int totalPrj) {
for (Map.Entry<String, List<PrjBean.DataBean.Bean>> prjMap : listMap.entrySet()) { for (Map.Entry<String, List<PrjBean.DataBean.Bean>> prjMap : listMap.entrySet()) {
//上一個對象是否切紙
boolean lastIsCute = false;
for (PrjBean.DataBean.Bean bean : prjMap.getValue()) { for (PrjBean.DataBean.Bean bean : prjMap.getValue()) {
bean.setTotalPrj(totalPrj); bean.setTotalPrj(totalPrj);
if (bean.getStatus() == 2) { if (bean.getStatus() == 2) {
//要切紙,紙張數+1
currentIndex++; currentIndex++;
lastIsCute = true;
} else { } else {
if (currentIndex == 0) { if (currentIndex == 0) {
currentIndex = 1; currentIndex = 1;
} else if (lastIsCute) {
//如果上一張切紙,那這一張下標就要+1
currentIndex++;
} }
lastIsCute = false;
} }
bean.setCurrentIndex(currentIndex); bean.setCurrentIndex(currentIndex);
} }
...@@ -470,7 +478,7 @@ public class PrjService extends Service implements ReceiveListener { ...@@ -470,7 +478,7 @@ public class PrjService extends Service implements ReceiveListener {
private PrintCurrencyBean getPrintCurrencyBean(List<PrjBean.DataBean.Bean> beans) { private PrintCurrencyBean getPrintCurrencyBean(List<PrjBean.DataBean.Bean> beans) {
PrintCurrencyBean printCurrencyBean = null; PrintCurrencyBean printCurrencyBean = null;
if (beans != null && beans.size() > 0) { if (beans != null && beans.size() > 0) {
if (beans.get(0).getOrderType() == 1 || beans.get(0).getOrderType() == 3 ) { if (beans.get(0).getOrderType() == 1 || beans.get(0).getOrderType() == 3) {
//堂食,skyorder //堂食,skyorder
printCurrencyBean = MyPrintUtils.getPrintCurrencyBeanByType(mContext, 1); printCurrencyBean = MyPrintUtils.getPrintCurrencyBeanByType(mContext, 1);
} else { } else {
......
...@@ -27,7 +27,9 @@ android { ...@@ -27,7 +27,9 @@ android {
} }
} }
} }
// viewBinding {
// enabled = true
// }
resourcePrefix "supply_chain" resourcePrefix "supply_chain"
buildTypes { buildTypes {
......
package com.gingersoft.supply_chain.di.component;
import dagger.BindsInstance;
import dagger.Component;
import com.jess.arms.di.component.AppComponent;
import com.gingersoft.supply_chain.di.module.WareHouseListModule;
import com.gingersoft.supply_chain.mvp.contract.WareHouseListContract;
import com.jess.arms.di.scope.FragmentScope;
import com.gingersoft.supply_chain.mvp.ui.fragment.warehouse.WareHouseListFragment;
/**
* ================================================
* Description:
* <p>
* Created by MVPArmsTemplate on 01/06/2021 15:37
* <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
* <a href="https://github.com/JessYanCoding">Follow me</a>
* <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
* <a href="https://github.com/JessYanCoding/MVPArms/wiki">See me</a>
* <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
* ================================================
*/
@FragmentScope
@Component(modules = WareHouseListModule.class, dependencies = AppComponent.class)
public interface WareHouseListComponent {
void inject(WareHouseListFragment fragment);
@Component.Builder
interface Builder {
@BindsInstance
WareHouseListComponent.Builder view(WareHouseListContract.View view);
WareHouseListComponent.Builder appComponent(AppComponent appComponent);
WareHouseListComponent build();
}
}
\ No newline at end of file
package com.gingersoft.supply_chain.di.component;
import dagger.BindsInstance;
import dagger.Component;
import com.jess.arms.di.component.AppComponent;
import com.gingersoft.supply_chain.di.module.WareHousingDetailsModule;
import com.gingersoft.supply_chain.mvp.contract.WareHousingDetailsContract;
import com.jess.arms.di.scope.FragmentScope;
import com.gingersoft.supply_chain.mvp.ui.fragment.warehouse.WareHousingDetailsFragment;
/**
* ================================================
* Description:
* <p>
* Created by MVPArmsTemplate on 01/12/2021 14:28
* <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
* <a href="https://github.com/JessYanCoding">Follow me</a>
* <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
* <a href="https://github.com/JessYanCoding/MVPArms/wiki">See me</a>
* <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
* ================================================
*/
@FragmentScope
@Component(modules = WareHousingDetailsModule.class, dependencies = AppComponent.class)
public interface WareHousingDetailsComponent {
void inject(WareHousingDetailsFragment fragment);
@Component.Builder
interface Builder {
@BindsInstance
WareHousingDetailsComponent.Builder view(WareHousingDetailsContract.View view);
WareHousingDetailsComponent.Builder appComponent(AppComponent appComponent);
WareHousingDetailsComponent build();
}
}
\ No newline at end of file
package com.gingersoft.supply_chain.di.module;
import com.jess.arms.di.scope.FragmentScope;
import dagger.Binds;
import dagger.Module;
import dagger.Provides;
import com.gingersoft.supply_chain.mvp.contract.WareHouseListContract;
import com.gingersoft.supply_chain.mvp.model.WareHouseListModel;
/**
* ================================================
* Description:
* <p>
* Created by MVPArmsTemplate on 01/06/2021 15:37
* <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
* <a href="https://github.com/JessYanCoding">Follow me</a>
* <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
* <a href="https://github.com/JessYanCoding/MVPArms/wiki">See me</a>
* <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
* ================================================
*/
@Module
public abstract class WareHouseListModule {
@Binds
abstract WareHouseListContract.Model bindWareHouseListModel(WareHouseListModel model);
}
\ No newline at end of file
package com.gingersoft.supply_chain.di.module;
import com.jess.arms.di.scope.FragmentScope;
import dagger.Binds;
import dagger.Module;
import dagger.Provides;
import com.gingersoft.supply_chain.mvp.contract.WareHousingDetailsContract;
import com.gingersoft.supply_chain.mvp.model.WareHousingDetailsModel;
/**
* ================================================
* Description:
* <p>
* Created by MVPArmsTemplate on 01/12/2021 14:28
* <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
* <a href="https://github.com/JessYanCoding">Follow me</a>
* <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
* <a href="https://github.com/JessYanCoding/MVPArms/wiki">See me</a>
* <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
* ================================================
*/
@Module
public abstract class WareHousingDetailsModule {
@Binds
abstract WareHousingDetailsContract.Model bindWareHousingDetailsModel(WareHousingDetailsModel model);
}
\ No newline at end of file
...@@ -27,4 +27,11 @@ public class BasicUnitBean { ...@@ -27,4 +27,11 @@ public class BasicUnitBean {
private long createTime; private long createTime;
private long updateTime; private long updateTime;
private int updateUid; private int updateUid;
public BasicUnitBean() {
}
public BasicUnitBean(String content) {
this.content = content;
}
} }
package com.gingersoft.supply_chain.mvp.bean;
import java.util.List;
import lombok.Data;
/**
* @author 宇航.
* User: admin
* Date: 2021/1/7
* Time: 12:22
* Use: 存儲分類和對應食材
*/
@Data
public class CategoryFoodTreeBean {
/**
* 分類集合,父分類id和子分類id都在
* 可以通過遍歷這個集合找到分類下的食材數據
*/
private List<Integer> categoryIds;
/**
* 分類集合,父分類名和子分類名都在
* 可以通過遍歷這個集合找到分類下的食材數據
*/
private List<String> categoryNames;
/**
* 食品數據
*/
private List<PurchaseFoodBean> foodInfo;
}
...@@ -21,6 +21,7 @@ public class ConfirmOrderBean { ...@@ -21,6 +21,7 @@ public class ConfirmOrderBean {
private PurchaseOrder purchaseOrder; private PurchaseOrder purchaseOrder;
private List<PurchaseOrderDetails> purchaseOrderDetails; private List<PurchaseOrderDetails> purchaseOrderDetails;
private double minimumAmount;//最低採購金額 private double minimumAmount;//最低採購金額
@Data @Data
public static class PurchaseOrder implements Serializable { public static class PurchaseOrder implements Serializable {
private static final long serialVersionUID = -8777410033061311699L; private static final long serialVersionUID = -8777410033061311699L;
...@@ -38,14 +39,14 @@ public class ConfirmOrderBean { ...@@ -38,14 +39,14 @@ public class ConfirmOrderBean {
private String remarks; private String remarks;
} }
public static PurchaseOrder conversionPurchaseOrder(PurchaseFoodBean cartFood) { public static PurchaseOrder conversionPurchaseOrder(int supplierId, String supplierName, double totalAmount) {
PurchaseOrder purchaseOrder = new PurchaseOrder(); PurchaseOrder purchaseOrder = new PurchaseOrder();
purchaseOrder.setSupplierId(cartFood.getSupplierId()); purchaseOrder.setSupplierId(supplierId);
purchaseOrder.setSupplierName(cartFood.getSupplierName()); purchaseOrder.setSupplierName(supplierName);
purchaseOrder.setBrandId(RestaurantInfoManager.newInstance().getBrandId()); purchaseOrder.setBrandId(RestaurantInfoManager.newInstance().getBrandId());
purchaseOrder.setRestaurantId(RestaurantInfoManager.newInstance().getRestaurantId()); purchaseOrder.setRestaurantId(RestaurantInfoManager.newInstance().getRestaurantId());
purchaseOrder.setInitialShippingTime(TimeUtils.getNextDayLong(1)); purchaseOrder.setInitialShippingTime(TimeUtils.getNextDayLong(1));
purchaseOrder.setTotalAmount(MoneyUtil.priceCalculation(cartFood.getUnitPrice(), cartFood.getFoodQuantity())); purchaseOrder.setTotalAmount(totalAmount);
purchaseOrder.setActualPayment(MoneyUtil.sum(purchaseOrder.getTotalAmount(), purchaseOrder.getShipping())); purchaseOrder.setActualPayment(MoneyUtil.sum(purchaseOrder.getTotalAmount(), purchaseOrder.getShipping()));
return purchaseOrder; return purchaseOrder;
} }
......
...@@ -13,6 +13,8 @@ import lombok.Data; ...@@ -13,6 +13,8 @@ import lombok.Data;
*/ */
@Data @Data
public class DeputyUnitBean implements Serializable { public class DeputyUnitBean implements Serializable {
private Integer id;
private int uid;
/** /**
* 品牌id * 品牌id
*/ */
...@@ -30,16 +32,40 @@ public class DeputyUnitBean implements Serializable { ...@@ -30,16 +32,40 @@ public class DeputyUnitBean implements Serializable {
*/ */
private String deputyUnit; private String deputyUnit;
/** /**
* 副單位的值
*/
private double deputyValue;
/**
* 食材id * 食材id
*/ */
private int purchaseFoodId; private int purchaseFoodId;
/** /**
* 換算倍數 * 換算倍數
*/ */
private String conversionMultiple = "1"; private double conversionMultiple;
/** /**
* 是否删除:0正常,1删除 * 是否删除:0正常,1删除
*/ */
private Boolean deletes; private int deletes;
/**
* 不知道幹嘛的
*/
private int type;
public DeputyUnitBean() {
}
public DeputyUnitBean(String deputyUnit, double deputyValue) {
this.deputyUnit = deputyUnit;
this.deputyValue = deputyValue;
}
public static DeputyUnitBean getDeputyUnitByWareHousingUnit(WareHousingUnitBean wareHousingUnitBean){
DeputyUnitBean deputyUnitBean = new DeputyUnitBean();
deputyUnitBean.setId(wareHousingUnitBean.getId());
deputyUnitBean.setDeputyUnit(wareHousingUnitBean.getUnitName());
deputyUnitBean.setDeputyValue(wareHousingUnitBean.getUnitValue());
deputyUnitBean.setConversionMultiple(wareHousingUnitBean.getConversionMultiple());
return deputyUnitBean;
}
} }
...@@ -17,5 +17,4 @@ public class FoodByCategoryResultBean { ...@@ -17,5 +17,4 @@ public class FoodByCategoryResultBean {
private long sysTime; private long sysTime;
private String errMsg; private String errMsg;
private List<PurchaseFoodBean> data; private List<PurchaseFoodBean> data;
} }
...@@ -17,10 +17,10 @@ public class NewPurchaseOrderBean { ...@@ -17,10 +17,10 @@ public class NewPurchaseOrderBean {
private int restaurantId; private int restaurantId;
private double totalAmount; private double totalAmount;
private String remarks; private String remarks;
private List<PurchaseOrderDetailsBean> purchaseOrderDetailsVOS; private List<NewPurchaseOrderDetailsBean> purchaseOrderDetailsVOS;
@Data @Data
public static class PurchaseOrderDetailsBean { public static class NewPurchaseOrderDetailsBean {
private int foodId; private int foodId;
private int foodQuantity; private int foodQuantity;
private double foodPrice; private double foodPrice;
......
...@@ -17,7 +17,7 @@ public class OrderWareHouseBean { ...@@ -17,7 +17,7 @@ public class OrderWareHouseBean {
private int orderId; private int orderId;
private PurchaseWarehousingOrder purchaseWarehousingOrder; private PurchaseWarehousingOrder purchaseWarehousingOrder;
private List<PurchaseWarehousingOrderDetail> purchaseWarehousingOrderDetails; private List<PurchaseWarehousingOrderDetail> purchaseWarehousingOrderDetailsTOS;
@Data @Data
public static class PurchaseWarehousingOrder { public static class PurchaseWarehousingOrder {
...@@ -36,7 +36,17 @@ public class OrderWareHouseBean { ...@@ -36,7 +36,17 @@ public class OrderWareHouseBean {
private int foodQuantity; private int foodQuantity;
private double foodPrice; private double foodPrice;
private double totalPrice; private double totalPrice;
private int type; /**
private String unitContent; * 主單位名稱
*/
private String basicUnitName;
/**
* 主單位內容
*/
private double basicUnitValue;
/**
* 副單位
*/
private List<WareHousingUnitBean> purchaseWarehousingUnits;
} }
} }
...@@ -30,6 +30,10 @@ public class PurchaseFoodBean implements Serializable { ...@@ -30,6 +30,10 @@ public class PurchaseFoodBean implements Serializable {
* 分類名 * 分類名
*/ */
private String foodCategoryName; private String foodCategoryName;
/**
* 應該是分類的父級id
*/
private int parentId;
private String remarks; private String remarks;
private int quantityStarts; private int quantityStarts;
private int quantityEnd; private int quantityEnd;
...@@ -54,7 +58,8 @@ public class PurchaseFoodBean implements Serializable { ...@@ -54,7 +58,8 @@ public class PurchaseFoodBean implements Serializable {
/** /**
* 分類id * 分類id
*/ */
private int categoryId; private int foodCategoryId;
/** /**
* 所屬供應商id * 所屬供應商id
*/ */
...@@ -74,10 +79,21 @@ public class PurchaseFoodBean implements Serializable { ...@@ -74,10 +79,21 @@ public class PurchaseFoodBean implements Serializable {
private InventoryAlarm inventoryAlarm; private InventoryAlarm inventoryAlarm;
/** /**
* 預警的信息,獲取詳情接口返回的不是對象,傳遞給後台時需要轉為對象
* 所以需要在這裡建這幾個字段,用於接收
*/
private int inventoryWarningId;
private boolean reviews;
private int minimumInventory;
private int shelfLife;
private int warningDays;
/**
* 庫存預警 模塊 * 庫存預警 模塊
*/ */
@Data @Data
public static class InventoryAlarm { public static class InventoryAlarm {
private int id;
/** /**
* 是否審核 0否 1是 * 是否審核 0否 1是
*/ */
......
...@@ -99,22 +99,24 @@ public class PurchaseOrderDetailsBean { ...@@ -99,22 +99,24 @@ public class PurchaseOrderDetailsBean {
private String name; private String name;
//自定義字段,總價 //自定義字段,總價
private double totalAmount; private double totalAmount;
//入庫總價
private double warehousingAmount;
//是否被選中 //是否被選中
private boolean isChecked = false; private boolean isChecked = false;
/**
* 未入庫時,後台傳來的副單位集合
*/
private List<DeputyUnitBean> foodUnits; private List<DeputyUnitBean> foodUnits;
/**
* 入庫後,後台傳來的副單位數據
*/
private List<WareHousingUnitBean> purchaseWarehousingUnits;
//用戶顯示的可操作的集合 // List<DeputyUnitBean> deputyUnitBeans;
List<WareHouseBean> wareHouseBeans; /**
* 沒有入庫單號,暫時用訂單編號
@Data */
public static class WareHouseBean { private String orderNo;
private String title;
private String value;
public WareHouseBean(String title, String value) {
this.title = title;
this.value = value;
}
}
} }
} }
...@@ -22,6 +22,10 @@ public class SendSupplierMsgBean { ...@@ -22,6 +22,10 @@ public class SendSupplierMsgBean {
//自定義字段,當前選中的發送方式 //自定義字段,當前選中的發送方式
private int checkPosition = 0; private int checkPosition = 0;
/**
* 是否發送
*/
private boolean isSend = false;
private List<SupplierInfoBean.SupplierContacts> supplierContacts; private List<SupplierInfoBean.SupplierContacts> supplierContacts;
} }
package com.gingersoft.supply_chain.mvp.bean;
import java.util.List;
import lombok.Data;
/**
* @author 宇航.
* User: admin
* Date: 2021/1/9
* Time: 11:47
* Use:購物車操作類,避免在列表中計算
*/
@Data
public class ShoppingCartBean {
/**
* 該供應商下的食品列表
*/
List<PurchaseFoodBean> foodList;
/**
* 供應商id
*/
private int supplierId;
/**
* 供應商名字
*/
private String supplierName;
/**
* 最低採購金額
*/
private double minimumAmount;
/**
* 供應商地址
*/
private String address;
/**
* 選中的食材種類數量
*/
private int selectSpeciesNum;
/**
* 選中的食材總價
*/
private double selectFoodAmount;
/**
* 當前供應商下的食品是否全選
*/
private boolean isAllSelect;
/**
* 是否閃爍:如果採購金額低於最低採購金額限制,會滾動到指定位置並閃爍
*/
private boolean isFlashing = false;
}
package com.gingersoft.supply_chain.mvp.bean;
import java.util.List;
import lombok.Data;
/**
* @author 宇航.
* User: admin
* Date: 2021/1/6
* Time: 16:22
* Use: 庫存查詢列表實體類
*/
@Data
public class WareHouseListBean {
/**
* success : true
* sysTime : 1609921315071
* data : {"total":{"overdue":0,"aboutExpire":0,"outStock":1,"cost":1067,"count":4},"purchaseWarehousingOrderDetailsVOS":[{"id":84,"name":"阿克苏苹果🍎","cateName":"特级水果","supplierName":"盒马生鲜","basicUnitName":"1","foodPrice":89,"foodNum":3,"foodAmount":267},{"id":67,"name":"大閘蟹","cateName":"海鮮","supplierName":"測試供應商1205","basicUnitName":"1","foodPrice":100,"foodNum":3,"foodAmount":300},{"id":66,"name":"澳洲龍蝦","cateName":"海鮮","supplierName":"測試供應商1205","basicUnitName":"1","foodPrice":100,"foodNum":3,"foodAmount":300},{"id":3,"name":"香蕉","cateName":"青菜","supplierName":"人民公社供應商","basicUnitName":"3","foodPrice":2,"foodNum":20,"foodAmount":200}]}
*/
private String errMsg;
private boolean success;
private long sysTime;
private WareHousingDataBean data;
@Data
public static class WareHousingDataBean {
/**
* total : {"overdue":0,"aboutExpire":0,"outStock":1,"cost":1067,"count":4}
* purchaseWarehousingOrderDetailsVOS : [{"id":84,"name":"阿克苏苹果🍎","cateName":"特级水果","supplierName":"盒马生鲜","basicUnitName":"1","foodPrice":89,"foodNum":3,"foodAmount":267},{"id":67,"name":"大閘蟹","cateName":"海鮮","supplierName":"測試供應商1205","basicUnitName":"1","foodPrice":100,"foodNum":3,"foodAmount":300},{"id":66,"name":"澳洲龍蝦","cateName":"海鮮","supplierName":"測試供應商1205","basicUnitName":"1","foodPrice":100,"foodNum":3,"foodAmount":300},{"id":3,"name":"香蕉","cateName":"青菜","supplierName":"人民公社供應商","basicUnitName":"3","foodPrice":2,"foodNum":20,"foodAmount":200}]
*/
private TotalBean total;
private List<PurchaseWarehousingOrderDetailsVOSBean> purchaseWarehousingOrderDetailsVOS;
/**
* 數量統計
*/
@Data
public static class TotalBean {
/**
* overdue : 0
* aboutExpire : 0
* outStock : 1
* cost : 1067
* count : 4
*/
/**
* 過期食材數量
*/
private int overdue;
/**
* 即將過期食材數量
*/
private int aboutExpire;
/**
* 低庫存
*/
private int outStock;
/**
* 成本
*/
private double cost;
/**
* 本次查詢數據條數
*/
private int count;
}
/**
* 食品信息
*/
@Data
public static class PurchaseWarehousingOrderDetailsVOSBean {
/**
* id : 84
* name : 阿克苏苹果🍎
* cateName : 特级水果
* supplierName : 盒马生鲜
* basicUnitName : 1
* foodPrice : 89
* foodNum : 3
* foodAmount : 267
*/
private int id;
private String name;
private String cateName;
private String supplierName;
private String basicUnitName;
private double foodPrice;
private int foodNum;
private double foodAmount;
}
}
}
...@@ -9,7 +9,7 @@ import lombok.Data; ...@@ -9,7 +9,7 @@ import lombok.Data;
* User: admin * User: admin
* Date: 2020/12/26 * Date: 2020/12/26
* Time: 15:46 * Time: 15:46
* Use: * Use: 入庫單實體類
*/ */
@Data @Data
public class WareHousingOrderBean { public class WareHousingOrderBean {
......
package com.gingersoft.supply_chain.mvp.bean;
/**
* @author 宇航.
* User: admin
* Date: 2021/1/14
* Time: 14:53
* Use:
*/
public class WareHousingUnitBean {
private int id;
/**
* 入庫單詳情id
*/
private int purchaseWarehousingOrderDetailsId;
/**
* 副單位名稱
*/
private String unitName;
/**
* 副單位值
*/
private double unitValue;
/**
* 換算倍數
*/
private double conversionMultiple;
private int brandId;
private int restaurantId;
public WareHousingUnitBean(int purchaseWarehousingOrderDetailsId, String unitName, double unitValue, double conversionMultiple) {
this.purchaseWarehousingOrderDetailsId = purchaseWarehousingOrderDetailsId;
this.unitName = unitName;
this.unitValue = unitValue;
this.conversionMultiple = conversionMultiple;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public int getPurchaseWarehousingOrderDetailsId() {
return purchaseWarehousingOrderDetailsId;
}
public void setPurchaseWarehousingOrderDetailsId(int purchaseWarehousingOrderDetailsId) {
this.purchaseWarehousingOrderDetailsId = purchaseWarehousingOrderDetailsId;
}
public String getUnitName() {
return unitName;
}
public void setUnitName(String unitName) {
this.unitName = unitName;
}
public double getUnitValue() {
return unitValue;
}
public void setUnitValue(double unitValue) {
this.unitValue = unitValue;
}
public double getConversionMultiple() {
return conversionMultiple;
}
public void setConversionMultiple(double conversionMultiple) {
this.conversionMultiple = conversionMultiple;
}
public int getBrandId() {
return brandId;
}
public void setBrandId(int brandId) {
this.brandId = brandId;
}
public int getRestaurantId() {
return restaurantId;
}
public void setRestaurantId(int restaurantId) {
this.restaurantId = restaurantId;
}
}
...@@ -18,15 +18,29 @@ public class Constant { ...@@ -18,15 +18,29 @@ public class Constant {
public static final int DELETE = 1; public static final int DELETE = 1;
public static final int NORMAL = 0; public static final int NORMAL = 0;
/**
* 上傳圖片類型:食材圖
*/
public static final int UPLOAD_PIC_TYPE_FOOD = 1;
/**
* 上傳圖片類型:訂單收貨圖
*/
public static final int UPLOAD_PIC_TYPE_ORDER = 2;
public static final String GET_INFO_ERROR = "數據獲取失敗,請稍候再試"; public static final String GET_INFO_ERROR = "數據獲取失敗,請稍候再試";
public static final String INFO_SYNTAX_ERROR = "數據解析失敗,請聯繫開發人員"; public static final String INFO_SYNTAX_ERROR = "數據解析失敗,請聯繫開發人員";
public static final String GET_INFO_LOADING = "數據獲取中..."; public static final String GET_INFO_LOADING = "數據獲取中...";
public static final String NULL_INFO_ERROR = "未獲取到數據,請退出後重試"; public static final String NULL_INFO_ERROR = "未獲取到數據,請退出後重試";
public static final String SAVE_LOADING = "保存中...";
public static final String SAVE_SUCCESS = "保存成功"; public static final String SAVE_SUCCESS = "保存成功";
public static final String SAVE_FAIL = "保存失敗"; public static final String SAVE_FAIL = "保存失敗,請稍後重試";
public static final String UPDATE_LOADING = "修改中...";
public static final String UPDATE_SUCCESS = "修改成功";
public static final String UPDATE_FAIL = "修改失敗,請稍後重試";
public static final String DELETE_LOADING = "刪除中...";
public static final String DELETE_SUCCESS = "刪除成功";
public static final String DELETE_FAIL = "刪除失敗,請稍後重試";
public static void addBrandId(Map<String, Object> map) { public static void addBrandId(Map<String, Object> map) {
map.put("brandId", RestaurantInfoManager.newInstance().getBrandId()); map.put("brandId", RestaurantInfoManager.newInstance().getBrandId());
} }
......
...@@ -13,7 +13,7 @@ import java.util.Observable; ...@@ -13,7 +13,7 @@ import java.util.Observable;
* Time: 11:21 * Time: 11:21
* Use: 供應鏈購物車,需要緩存用戶選中的食品 * Use: 供應鏈購物車,需要緩存用戶選中的食品
*/ */
public class SupplyShoppingCart extends Observable { public class SupplyShoppingCart {
/** /**
* key為食品id * key為食品id
* value為食品信息 * value為食品信息
...@@ -36,7 +36,6 @@ public class SupplyShoppingCart extends Observable { ...@@ -36,7 +36,6 @@ public class SupplyShoppingCart extends Observable {
cartFoods = new ArrayList<>(); cartFoods = new ArrayList<>();
} }
if (cartFoods.size() != goodsNumber) { if (cartFoods.size() != goodsNumber) {
notifyObservers(cartFoods.size());
goodsNumber = cartFoods.size(); goodsNumber = cartFoods.size();
} }
return cartFoods; return cartFoods;
......
...@@ -30,6 +30,10 @@ public interface CategoryContract { ...@@ -30,6 +30,10 @@ public interface CategoryContract {
void loadCategoryInfo(List<FoodCategoryResultBean.DataBean.FoodCategoryBean> list, int hierarchy); void loadCategoryInfo(List<FoodCategoryResultBean.DataBean.FoodCategoryBean> list, int hierarchy);
void refreshInfo(int hierarchy, int position); void refreshInfo(int hierarchy, int position);
void loadCategoryFail();
void loadCategoryError();
} }
//Model层定义接口,外部只需关心Model返回的数据,无需关心内部细节,即是否使用缓存 //Model层定义接口,外部只需关心Model返回的数据,无需关心内部细节,即是否使用缓存
......
...@@ -52,8 +52,6 @@ public interface FoodIngredientsContract { ...@@ -52,8 +52,6 @@ public interface FoodIngredientsContract {
void loadFail(); void loadFail();
void setCurrentSupplierName(String name); void setCurrentSupplierName(String name);
void setCurrentCategoryName(String name);
} }
//Model层定义接口,外部只需关心Model返回的数据,无需关心内部细节,即是否使用缓存 //Model层定义接口,外部只需关心Model返回的数据,无需关心内部细节,即是否使用缓存
...@@ -64,6 +62,8 @@ public interface FoodIngredientsContract { ...@@ -64,6 +62,8 @@ public interface FoodIngredientsContract {
Observable<BaseResult> updateFood(RequestBody requestBody); Observable<BaseResult> updateFood(RequestBody requestBody);
Observable<BaseResult> deleteFood(int foodId);
Observable<OrderCategoryBean> getCategoryTrees(Map<String, Object> map); Observable<OrderCategoryBean> getCategoryTrees(Map<String, Object> map);
Observable<FoodByCategoryResultBean> getFoodByCategory(Map<String, Object> map); Observable<FoodByCategoryResultBean> getFoodByCategory(Map<String, Object> map);
......
...@@ -29,9 +29,17 @@ public interface FoodUnitPageContract { ...@@ -29,9 +29,17 @@ public interface FoodUnitPageContract {
interface View extends IView { interface View extends IView {
void loadBasicUnitAdapter(List<BasicUnitBean> basicUnitBeans); void loadBasicUnitAdapter(List<BasicUnitBean> basicUnitBeans);
void addBasicUnit(BasicUnitBean basicUnitBeans);
void loadDeputyUnitAdapter(List<DeputyUnitBean> deputyUnitBeans); void loadDeputyUnitAdapter(List<DeputyUnitBean> deputyUnitBeans);
void initTopBar(String title); void initTopBar(String title);
void setMainUnit(String content);
void callBackDeputyUnit(List<DeputyUnitBean> deputyUnitBeans);
void deleteDeputyUnit(int position);
} }
//Model层定义接口,外部只需关心Model返回的数据,无需关心内部细节,即是否使用缓存 //Model层定义接口,外部只需关心Model返回的数据,无需关心内部细节,即是否使用缓存
...@@ -51,5 +59,15 @@ public interface FoodUnitPageContract { ...@@ -51,5 +59,15 @@ public interface FoodUnitPageContract {
* @return * @return
*/ */
Observable<BaseResult> updateDeputyUnitList(RequestBody requestBody); Observable<BaseResult> updateDeputyUnitList(RequestBody requestBody);
/**
* 修改副單位
*/
Observable<BaseResult> updateDeputyUnit(RequestBody requestBody);
/**
* 添加下面快捷輸入的單位
* @return
*/
Observable<BaseResult> addBasicUnit(RequestBody requestBody);
} }
} }
...@@ -5,6 +5,7 @@ import com.jess.arms.mvp.IModel; ...@@ -5,6 +5,7 @@ import com.jess.arms.mvp.IModel;
import com.jess.arms.mvp.IView; import com.jess.arms.mvp.IView;
import java.util.List; import java.util.List;
import java.util.Map;
import io.reactivex.Observable; import io.reactivex.Observable;
import okhttp3.MultipartBody; import okhttp3.MultipartBody;
...@@ -30,16 +31,25 @@ public interface NewFoodIngredientsContract { ...@@ -30,16 +31,25 @@ public interface NewFoodIngredientsContract {
void uploadPicSuccess(List<String> picUrl); void uploadPicSuccess(List<String> picUrl);
void saveFoodInfoSuccess(); /**
* 保存成功需要將供應商名稱和分類名稱傳回上一個頁面,用於刷新頁面數據
*
* @param supplierName 供應商名稱
* @param categoryName 分類名稱
*/
void updateFoodInfoSuccess(String supplierName, String categoryName);
void initAdapter();
} }
//Model层定义接口,外部只需关心Model返回的数据,无需关心内部细节,即是否使用缓存 //Model层定义接口,外部只需关心Model返回的数据,无需关心内部细节,即是否使用缓存
interface Model extends IModel { interface Model extends IModel {
Observable<BaseResult> upLoadPic(List<MultipartBody.Part> parts); Observable<BaseResult> upLoadPic(List<MultipartBody.Part> parts, Map<String, Object> map);
Observable<BaseResult> addFood(RequestBody requestBody); Observable<BaseResult> addFood(RequestBody requestBody);
Observable<BaseResult> updateFood(RequestBody requestBody); Observable<BaseResult> updateFood(RequestBody requestBody);
Observable<BaseResult> getFoodIngredientsDetails(Map<String, Object> map);
} }
} }
...@@ -3,6 +3,7 @@ package com.gingersoft.supply_chain.mvp.contract; ...@@ -3,6 +3,7 @@ package com.gingersoft.supply_chain.mvp.contract;
import com.gingersoft.gsa.cloud.common.bean.BaseResult; import com.gingersoft.gsa.cloud.common.bean.BaseResult;
import com.gingersoft.supply_chain.mvp.bean.ConfirmOrderBean; import com.gingersoft.supply_chain.mvp.bean.ConfirmOrderBean;
import com.gingersoft.supply_chain.mvp.bean.PurchaseFoodBean; import com.gingersoft.supply_chain.mvp.bean.PurchaseFoodBean;
import com.gingersoft.supply_chain.mvp.bean.ShoppingCartBean;
import com.jess.arms.mvp.IModel; import com.jess.arms.mvp.IModel;
import com.jess.arms.mvp.IView; import com.jess.arms.mvp.IView;
...@@ -27,11 +28,18 @@ import okhttp3.RequestBody; ...@@ -27,11 +28,18 @@ import okhttp3.RequestBody;
public interface ShoppingCatContract { public interface ShoppingCatContract {
//对于经常使用的关于UI的方法可以定义到IView中,如显示隐藏进度条,和显示文字消息 //对于经常使用的关于UI的方法可以定义到IView中,如显示隐藏进度条,和显示文字消息
interface View extends IView { interface View extends IView {
void loadAdapter(List<List<PurchaseFoodBean>> supplierFoods); void loadAdapter(List<ShoppingCartBean> shoppingCartBeans);
void setTotalInfo(int typeTotal, double totalPrice); void setTotalInfo(int typeTotal, double totalPrice);
void addOrderSuccess(List<ConfirmOrderBean.PurchaseOrder> purchaseOrders); void addOrderSuccess(List<ConfirmOrderBean.PurchaseOrder> purchaseOrders);
/**
* 刷新列表數據
* @param position 傳-1 刷新所有,否則,刷新指定item
*/
void notifyAdapter(int position);
} }
//Model层定义接口,外部只需关心Model返回的数据,无需关心内部细节,即是否使用缓存 //Model层定义接口,外部只需关心Model返回的数据,无需关心内部细节,即是否使用缓存
......
package com.gingersoft.supply_chain.mvp.contract;
import com.gingersoft.gsa.cloud.common.bean.BaseResult;
import com.gingersoft.supply_chain.mvp.bean.WareHouseListBean;
import com.jess.arms.mvp.IView;
import com.jess.arms.mvp.IModel;
import java.util.List;
import java.util.Map;
import io.reactivex.Observable;
/**
* ================================================
* Description:
* <p>
* Created by MVPArmsTemplate on 01/06/2021 15:37
* <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
* <a href="https://github.com/JessYanCoding">Follow me</a>
* <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
* <a href="https://github.com/JessYanCoding/MVPArms/wiki">See me</a>
* <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
* ================================================
*/
public interface WareHouseListContract {
//对于经常使用的关于UI的方法可以定义到IView中,如显示隐藏进度条,和显示文字消息
interface View extends IView {
void loadWarehousingInfo(WareHouseListBean.WareHousingDataBean data);
void loadListInfo(List<WareHouseListBean.WareHousingDataBean.PurchaseWarehousingOrderDetailsVOSBean> purchaseWarehousingOrderDetailsVos);
void finishLoad();
void loadFail();
}
//Model层定义接口,外部只需关心Model返回的数据,无需关心内部细节,即是否使用缓存
interface Model extends IModel {
Observable<WareHouseListBean> getWarehousing(Map<String, Object> map);
}
}
package com.gingersoft.supply_chain.mvp.contract;
import com.jess.arms.mvp.IView;
import com.jess.arms.mvp.IModel;
/**
* ================================================
* Description:
* <p>
* Created by MVPArmsTemplate on 01/12/2021 14:28
* <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
* <a href="https://github.com/JessYanCoding">Follow me</a>
* <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
* <a href="https://github.com/JessYanCoding/MVPArms/wiki">See me</a>
* <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
* ================================================
*/
public interface WareHousingDetailsContract {
//对于经常使用的关于UI的方法可以定义到IView中,如显示隐藏进度条,和显示文字消息
interface View extends IView {
}
//Model层定义接口,外部只需关心Model返回的数据,无需关心内部细节,即是否使用缓存
interface Model extends IModel {
}
}
...@@ -68,6 +68,11 @@ public class FoodIngredientsModel extends BaseModel implements FoodIngredientsCo ...@@ -68,6 +68,11 @@ public class FoodIngredientsModel extends BaseModel implements FoodIngredientsCo
} }
@Override @Override
public Observable<BaseResult> deleteFood(int foodId) {
return mRepositoryManager.obtainRetrofitService(SupplierServer.class).deleteFood(foodId);
}
@Override
public Observable<OrderCategoryBean> getCategoryTrees(Map<String, Object> map) { public Observable<OrderCategoryBean> getCategoryTrees(Map<String, Object> map) {
return mRepositoryManager.obtainRetrofitService(SupplierServer.class).getCategoryTrees(map); return mRepositoryManager.obtainRetrofitService(SupplierServer.class).getCategoryTrees(map);
} }
......
...@@ -58,4 +58,14 @@ public class FoodUnitPageModel extends BaseModel implements FoodUnitPageContract ...@@ -58,4 +58,14 @@ public class FoodUnitPageModel extends BaseModel implements FoodUnitPageContract
public Observable<BaseResult> updateDeputyUnitList(RequestBody requestBody) { public Observable<BaseResult> updateDeputyUnitList(RequestBody requestBody) {
return mRepositoryManager.obtainRetrofitService(SupplierServer.class).updateDeputyUnitList(requestBody); return mRepositoryManager.obtainRetrofitService(SupplierServer.class).updateDeputyUnitList(requestBody);
} }
@Override
public Observable<BaseResult> updateDeputyUnit(RequestBody requestBody) {
return mRepositoryManager.obtainRetrofitService(SupplierServer.class).updateDeputyUnit(requestBody);
}
@Override
public Observable<BaseResult> addBasicUnit(RequestBody requestBody) {
return mRepositoryManager.obtainRetrofitService(SupplierServer.class).addDeputyUnitInput(requestBody);
}
} }
\ No newline at end of file
...@@ -11,6 +11,7 @@ import com.jess.arms.integration.IRepositoryManager; ...@@ -11,6 +11,7 @@ import com.jess.arms.integration.IRepositoryManager;
import com.jess.arms.mvp.BaseModel; import com.jess.arms.mvp.BaseModel;
import java.util.List; import java.util.List;
import java.util.Map;
import javax.inject.Inject; import javax.inject.Inject;
...@@ -51,8 +52,8 @@ public class NewFoodIngredientsModel extends BaseModel implements NewFoodIngredi ...@@ -51,8 +52,8 @@ public class NewFoodIngredientsModel extends BaseModel implements NewFoodIngredi
} }
@Override @Override
public Observable<BaseResult> upLoadPic(List<MultipartBody.Part> parts) { public Observable<BaseResult> upLoadPic(List<MultipartBody.Part> parts, Map<String, Object> map) {
return mRepositoryManager.obtainRetrofitService(SupplierServer.class).upLoadPic(parts); return mRepositoryManager.obtainRetrofitService(SupplierServer.class).upLoadPic(parts, map);
} }
@Override @Override
...@@ -65,5 +66,8 @@ public class NewFoodIngredientsModel extends BaseModel implements NewFoodIngredi ...@@ -65,5 +66,8 @@ public class NewFoodIngredientsModel extends BaseModel implements NewFoodIngredi
return mRepositoryManager.obtainRetrofitService(SupplierServer.class).updateFood(requestBody); return mRepositoryManager.obtainRetrofitService(SupplierServer.class).updateFood(requestBody);
} }
@Override
public Observable<BaseResult> getFoodIngredientsDetails(Map<String, Object> map) {
return mRepositoryManager.obtainRetrofitService(SupplierServer.class).getFoodIngredientsDetails(map);
}
} }
\ No newline at end of file
package com.gingersoft.supply_chain.mvp.model;
import android.app.Application;
import com.gingersoft.gsa.cloud.common.bean.BaseResult;
import com.gingersoft.supply_chain.mvp.bean.WareHouseListBean;
import com.gingersoft.supply_chain.mvp.server.SupplierServer;
import com.google.gson.Gson;
import com.jess.arms.integration.IRepositoryManager;
import com.jess.arms.mvp.BaseModel;
import com.jess.arms.di.scope.FragmentScope;
import javax.inject.Inject;
import com.gingersoft.supply_chain.mvp.contract.WareHouseListContract;
import java.util.Map;
import io.reactivex.Observable;
/**
* ================================================
* Description:
* <p>
* Created by MVPArmsTemplate on 01/06/2021 15:37
* <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
* <a href="https://github.com/JessYanCoding">Follow me</a>
* <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
* <a href="https://github.com/JessYanCoding/MVPArms/wiki">See me</a>
* <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
* ================================================
*/
@FragmentScope
public class WareHouseListModel extends BaseModel implements WareHouseListContract.Model {
@Inject
Gson mGson;
@Inject
Application mApplication;
@Inject
public WareHouseListModel(IRepositoryManager repositoryManager) {
super(repositoryManager);
}
@Override
public void onDestroy() {
super.onDestroy();
this.mGson = null;
this.mApplication = null;
}
@Override
public Observable<WareHouseListBean> getWarehousing(Map<String, Object> map) {
return mRepositoryManager.obtainRetrofitService(SupplierServer.class).getWarehousing(map);
}
}
\ No newline at end of file
package com.gingersoft.supply_chain.mvp.model;
import android.app.Application;
import com.google.gson.Gson;
import com.jess.arms.integration.IRepositoryManager;
import com.jess.arms.mvp.BaseModel;
import com.jess.arms.di.scope.FragmentScope;
import javax.inject.Inject;
import com.gingersoft.supply_chain.mvp.contract.WareHousingDetailsContract;
/**
* ================================================
* Description:
* <p>
* Created by MVPArmsTemplate on 01/12/2021 14:28
* <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
* <a href="https://github.com/JessYanCoding">Follow me</a>
* <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
* <a href="https://github.com/JessYanCoding/MVPArms/wiki">See me</a>
* <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
* ================================================
*/
@FragmentScope
public class WareHousingDetailsModel extends BaseModel implements WareHousingDetailsContract.Model {
@Inject
Gson mGson;
@Inject
Application mApplication;
@Inject
public WareHousingDetailsModel(IRepositoryManager repositoryManager) {
super(repositoryManager);
}
@Override
public void onDestroy() {
super.onDestroy();
this.mGson = null;
this.mApplication = null;
}
}
\ No newline at end of file
...@@ -76,6 +76,13 @@ public class CategoryPresenter extends BasePresenter<CategoryContract.Model, Cat ...@@ -76,6 +76,13 @@ public class CategoryPresenter extends BasePresenter<CategoryContract.Model, Cat
this.mApplication = null; this.mApplication = null;
} }
/**
* 根據父分類id獲取子分類
*
* @param name
* @param parentId
* @param hierarchy
*/
public void getFoodCategoryList(String name, int parentId, int hierarchy) { public void getFoodCategoryList(String name, int parentId, int hierarchy) {
Map<String, Object> map = new HashMap<>(6); Map<String, Object> map = new HashMap<>(6);
map.put("pageSize", 1000); map.put("pageSize", 1000);
...@@ -149,6 +156,9 @@ public class CategoryPresenter extends BasePresenter<CategoryContract.Model, Cat ...@@ -149,6 +156,9 @@ public class CategoryPresenter extends BasePresenter<CategoryContract.Model, Cat
super.onError(t); super.onError(t);
mRootView.showMessage("獲取" + hierarchy + "級分類失敗"); mRootView.showMessage("獲取" + hierarchy + "級分類失敗");
mRootView.hideLoading(); mRootView.hideLoading();
if (hierarchy == primaryCategoryTag) {
mRootView.loadCategoryError();
}
} }
}); });
...@@ -163,6 +173,13 @@ public class CategoryPresenter extends BasePresenter<CategoryContract.Model, Cat ...@@ -163,6 +173,13 @@ public class CategoryPresenter extends BasePresenter<CategoryContract.Model, Cat
} }
} }
/**
* 新增分類
*
* @param parentId 父類id
* @param categoryName 分類名字
* @param hierarchy 級別:是第幾級分類
*/
public void addCategory(int parentId, String categoryName, int hierarchy) { public void addCategory(int parentId, String categoryName, int hierarchy) {
FoodCategoryResultBean.DataBean.FoodCategoryBean foodCategoryBean = toFoodCategoryBean(parentId, categoryName, 0); FoodCategoryResultBean.DataBean.FoodCategoryBean foodCategoryBean = toFoodCategoryBean(parentId, categoryName, 0);
RequestBody requestBody = RequestBody.create(MediaType.parse("application/json"), GsonUtils.GsonString(foodCategoryBean)); RequestBody requestBody = RequestBody.create(MediaType.parse("application/json"), GsonUtils.GsonString(foodCategoryBean));
...@@ -214,7 +231,7 @@ public class CategoryPresenter extends BasePresenter<CategoryContract.Model, Cat ...@@ -214,7 +231,7 @@ public class CategoryPresenter extends BasePresenter<CategoryContract.Model, Cat
RequestBody requestBody = RequestBody.create(MediaType.parse("application/json"), GsonUtils.GsonString(foodCategoryBean)); RequestBody requestBody = RequestBody.create(MediaType.parse("application/json"), GsonUtils.GsonString(foodCategoryBean));
mModel.updateFoodCategory(requestBody) mModel.updateFoodCategory(requestBody)
.subscribeOn(Schedulers.io()) .subscribeOn(Schedulers.io())
.doOnSubscribe(disposable -> mRootView.showLoading("修改中...")) .doOnSubscribe(disposable -> mRootView.showLoading(foodCategoryBean.getDeletes() == Constant.DELETE ? Constant.DELETE_LOADING : Constant.UPDATE_LOADING))
.subscribeOn(AndroidSchedulers.mainThread()) .subscribeOn(AndroidSchedulers.mainThread())
.observeOn(AndroidSchedulers.mainThread()) .observeOn(AndroidSchedulers.mainThread())
.doAfterTerminate(() -> mRootView.hideLoading()) .doAfterTerminate(() -> mRootView.hideLoading())
...@@ -227,7 +244,7 @@ public class CategoryPresenter extends BasePresenter<CategoryContract.Model, Cat ...@@ -227,7 +244,7 @@ public class CategoryPresenter extends BasePresenter<CategoryContract.Model, Cat
} 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(foodCategoryBean.getDeletes() == Constant.DELETE ? Constant.DELETE_FAIL : Constant.UPDATE_FAIL);
} }
} }
}); });
......
...@@ -80,7 +80,7 @@ public class ConfirmOrderPresenter extends BasePresenter<ConfirmOrderContract.Mo ...@@ -80,7 +80,7 @@ public class ConfirmOrderPresenter extends BasePresenter<ConfirmOrderContract.Mo
ConfirmOrderBean confirmOrderBean = listMap.get(cartFood.getSupplierId()); ConfirmOrderBean confirmOrderBean = listMap.get(cartFood.getSupplierId());
if (confirmOrderBean == null) { if (confirmOrderBean == null) {
confirmOrderBean = new ConfirmOrderBean(); confirmOrderBean = new ConfirmOrderBean();
confirmOrderBean.setPurchaseOrder(ConfirmOrderBean.conversionPurchaseOrder(cartFood)); // confirmOrderBean.setPurchaseOrder(ConfirmOrderBean.conversionPurchaseOrder(cartFood));
List<ConfirmOrderBean.PurchaseOrderDetails> purchaseOrderDetails = new ArrayList<>(); List<ConfirmOrderBean.PurchaseOrderDetails> purchaseOrderDetails = new ArrayList<>();
purchaseOrderDetails.add(ConfirmOrderBean.conversionPurchaseOrderDetails(cartFood)); purchaseOrderDetails.add(ConfirmOrderBean.conversionPurchaseOrderDetails(cartFood));
......
...@@ -408,7 +408,7 @@ public class NewSupplierPresenter extends BasePresenter<NewSupplierContract.Mode ...@@ -408,7 +408,7 @@ public class NewSupplierPresenter extends BasePresenter<NewSupplierContract.Mode
supplierInfoBean.setMinimumAmount(Double.parseDouble(minimumAmount)); supplierInfoBean.setMinimumAmount(Double.parseDouble(minimumAmount));
} }
if (TextUtil.isEmptyOrNullOrUndefined(supplierInfoBean.getSupplierNo())) { if (TextUtil.isEmptyOrNullOrUndefined(supplierInfoBean.getSupplierNo())) {
supplierInfoBean.setSupplierNo("GYS001"); supplierInfoBean.setSupplierNo(null);
} }
if (TextUtil.isEmptyOrNullOrUndefined(supplierInfoBean.getSupplierName())) { if (TextUtil.isEmptyOrNullOrUndefined(supplierInfoBean.getSupplierName())) {
mRootView.showMessage("請輸入供應商名稱"); mRootView.showMessage("請輸入供應商名稱");
......
package com.gingersoft.supply_chain.mvp.presenter; package com.gingersoft.supply_chain.mvp.presenter;
import android.app.Application; import android.app.Application;
import android.text.InputFilter;
import android.view.inputmethod.EditorInfo;
import com.gingersoft.gsa.cloud.ui.adapter.bean.InfoMultiBean; import com.gingersoft.gsa.cloud.ui.adapter.bean.InfoMultiBean;
import com.gingersoft.gsa.cloud.ui.adapter.bean.MultiInputSelectBean;
import com.gingersoft.supply_chain.mvp.bean.FoodPackingSpecificationBean; import com.gingersoft.supply_chain.mvp.bean.FoodPackingSpecificationBean;
import com.gingersoft.supply_chain.mvp.bean.MeasurementUnitBean; import com.gingersoft.supply_chain.mvp.bean.MeasurementUnitBean;
import com.gingersoft.supply_chain.mvp.contract.PackageSpecificationContract; import com.gingersoft.supply_chain.mvp.contract.PackageSpecificationContract;
import com.gingersoft.supply_chain.mvp.ui.fragment.food.MeasurementUnitFragment;
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;
import com.jess.arms.integration.AppManager; import com.jess.arms.integration.AppManager;
...@@ -22,9 +18,6 @@ import javax.inject.Inject; ...@@ -22,9 +18,6 @@ import javax.inject.Inject;
import me.jessyan.rxerrorhandler.core.RxErrorHandler; import me.jessyan.rxerrorhandler.core.RxErrorHandler;
import static com.gingersoft.supply_chain.mvp.ui.fragment.food.PackageSpecificationFragment.OrderingUnitRequestCode;
import static com.gingersoft.supply_chain.mvp.ui.fragment.food.PackageSpecificationFragment.ReceivingUnitRequestCode;
/** /**
* ================================================ * ================================================
...@@ -65,20 +58,20 @@ public class PackageSpecificationPresenter extends BasePresenter<PackageSpecific ...@@ -65,20 +58,20 @@ public class PackageSpecificationPresenter extends BasePresenter<PackageSpecific
List<InfoMultiBean> infoMultiBeans = new ArrayList<>(); List<InfoMultiBean> infoMultiBeans = new ArrayList<>();
infoMultiBeans.add(new InfoMultiBean(InfoMultiBean.ITEM_TYPE_LINE)); infoMultiBeans.add(new InfoMultiBean(InfoMultiBean.ITEM_TYPE_LINE));
infoMultiBeans.add(new InfoMultiBean(InfoMultiBean.ITEM_TYPE_TITLE, "包裝規格")); infoMultiBeans.add(new InfoMultiBean(InfoMultiBean.ITEM_TYPE_TITLE, "包裝規格"));
infoMultiBeans.add(new MultiInputSelectBean(InfoMultiBean.ITEM_MULTIPLE_INPUT_SELECT, "訂貨單位", "最小數量", "最大數量", "單位", OrderingUnitRequestCode, MeasurementUnitFragment.newInstance(true), new InputFilter[]{new InputFilter.LengthFilter(11)}, EditorInfo.TYPE_CLASS_NUMBER)); // infoMultiBeans.add(new MultiInputSelectBean(InfoMultiBean.ITEM_MULTIPLE_INPUT_SELECT, "訂貨單位", "最小數量", "最大數量", "單位", OrderingUnitRequestCode, MeasurementUnitFragment.class, new InputFilter[]{new InputFilter.LengthFilter(11)}, EditorInfo.TYPE_CLASS_NUMBER));
infoMultiBeans.add(new InfoMultiBean(InfoMultiBean.ITEM_TYPE_LINE)); infoMultiBeans.add(new InfoMultiBean(InfoMultiBean.ITEM_TYPE_LINE));
infoMultiBeans.add(new MultiInputSelectBean(InfoMultiBean.ITEM_MULTIPLE_INPUT_SELECT, "收貨單位", "最小數量", "最大數量", "單位", ReceivingUnitRequestCode, MeasurementUnitFragment.newInstance(true), new InputFilter[]{new InputFilter.LengthFilter(11)}, EditorInfo.TYPE_CLASS_NUMBER)); // infoMultiBeans.add(new MultiInputSelectBean(InfoMultiBean.ITEM_MULTIPLE_INPUT_SELECT, "收貨單位", "最小數量", "最大數量", "單位", ReceivingUnitRequestCode, MeasurementUnitFragment.class, new InputFilter[]{new InputFilter.LengthFilter(11)}, EditorInfo.TYPE_CLASS_NUMBER));
return infoMultiBeans; return infoMultiBeans;
} }
public void setOrderingUnit(List<InfoMultiBean> infoMultiBeans, MeasurementUnitBean.DataBean.Unit unit) { public void setOrderingUnit(List<InfoMultiBean> infoMultiBeans, MeasurementUnitBean.DataBean.Unit unit) {
this.orderingUnit = unit; this.orderingUnit = unit;
infoMultiBeans.get(orderingUnitIndex).setShowValueThird(unit.getUnitContent()); // infoMultiBeans.get(orderingUnitIndex).setShowValueThird(unit.getUnitContent());
} }
public void setReceivingUnit(List<InfoMultiBean> infoMultiBeans, MeasurementUnitBean.DataBean.Unit unit) { public void setReceivingUnit(List<InfoMultiBean> infoMultiBeans, MeasurementUnitBean.DataBean.Unit unit) {
this.receivingUnit = unit; this.receivingUnit = unit;
infoMultiBeans.get(receivingUnitIndex).setShowValueThird(unit.getUnitContent()); // infoMultiBeans.get(receivingUnitIndex).setShowValueThird(unit.getUnitContent());
} }
public List<FoodPackingSpecificationBean> getFoodPackingSpecifications(List<InfoMultiBean> infoMultiBeans) { public List<FoodPackingSpecificationBean> getFoodPackingSpecifications(List<InfoMultiBean> infoMultiBeans) {
...@@ -87,34 +80,34 @@ public class PackageSpecificationPresenter extends BasePresenter<PackageSpecific ...@@ -87,34 +80,34 @@ public class PackageSpecificationPresenter extends BasePresenter<PackageSpecific
FoodPackingSpecificationBean orderingUnitBean = new FoodPackingSpecificationBean(); FoodPackingSpecificationBean orderingUnitBean = new FoodPackingSpecificationBean();
orderingUnitBean.setFoodUnitId(orderingUnit.getId()); orderingUnitBean.setFoodUnitId(orderingUnit.getId());
// orderingUnitBean.setType(FoodPackingSpecificationBean.ORDERING_TYPE); // orderingUnitBean.setType(FoodPackingSpecificationBean.ORDERING_TYPE);
orderingUnitBean.setQuantityStarts(Double.parseDouble(getOrderingMinNum(infoMultiBeans))); // orderingUnitBean.setQuantityStarts(Double.parseDouble(getOrderingMinNum(infoMultiBeans)));
orderingUnitBean.setQuantityEnd(Double.parseDouble(getOrderingMaxNum(infoMultiBeans))); // orderingUnitBean.setQuantityEnd(Double.parseDouble(getOrderingMaxNum(infoMultiBeans)));
orderingUnitBean.setTypeName(infoMultiBeans.get(orderingUnitIndex).getShowValueThird()); // orderingUnitBean.setTypeName(infoMultiBeans.get(orderingUnitIndex).getShowValueThird());
foodPackingSpecificationBeans.add(orderingUnitBean); foodPackingSpecificationBeans.add(orderingUnitBean);
FoodPackingSpecificationBean receivingUnitBean = new FoodPackingSpecificationBean(); FoodPackingSpecificationBean receivingUnitBean = new FoodPackingSpecificationBean();
receivingUnitBean.setFoodUnitId(receivingUnit.getId()); receivingUnitBean.setFoodUnitId(receivingUnit.getId());
// receivingUnitBean.setType(FoodPackingSpecificationBean.RECEIVING_TYPE); // receivingUnitBean.setType(FoodPackingSpecificationBean.RECEIVING_TYPE);
receivingUnitBean.setQuantityStarts(Double.parseDouble(getReceivingMinNum(infoMultiBeans))); // receivingUnitBean.setQuantityStarts(Double.parseDouble(getReceivingMinNum(infoMultiBeans)));
receivingUnitBean.setQuantityEnd(Double.parseDouble(getReceivingMaxNum(infoMultiBeans))); // receivingUnitBean.setQuantityEnd(Double.parseDouble(getReceivingMaxNum(infoMultiBeans)));
receivingUnitBean.setTypeName(infoMultiBeans.get(receivingUnitIndex).getShowValueThird()); // receivingUnitBean.setTypeName(infoMultiBeans.get(receivingUnitIndex).getShowValueThird());
foodPackingSpecificationBeans.add(receivingUnitBean); foodPackingSpecificationBeans.add(receivingUnitBean);
return foodPackingSpecificationBeans; return foodPackingSpecificationBeans;
} }
public String getOrderingMinNum(List<InfoMultiBean> infoMultiBeans) { // public String getOrderingMinNum(List<InfoMultiBean> infoMultiBeans) {
return infoMultiBeans.get(orderingUnitIndex).getShowValue(); // return infoMultiBeans.get(orderingUnitIndex).getShowValue();
} // }
//
public String getOrderingMaxNum(List<InfoMultiBean> infoMultiBeans) { // public String getOrderingMaxNum(List<InfoMultiBean> infoMultiBeans) {
return infoMultiBeans.get(orderingUnitIndex).getShowValueSecond(); // return infoMultiBeans.get(orderingUnitIndex).getShowValueSecond();
} // }
public String getReceivingMinNum(List<InfoMultiBean> infoMultiBeans) { // public String getReceivingMinNum(List<InfoMultiBean> infoMultiBeans) {
return infoMultiBeans.get(receivingUnitIndex).getShowValue(); // return infoMultiBeans.get(receivingUnitIndex).getShowValue();
} // }
//
public String getReceivingMaxNum(List<InfoMultiBean> infoMultiBeans) { // public String getReceivingMaxNum(List<InfoMultiBean> infoMultiBeans) {
return infoMultiBeans.get(receivingUnitIndex).getShowValueSecond(); // return infoMultiBeans.get(receivingUnitIndex).getShowValueSecond();
} // }
} }
...@@ -15,7 +15,9 @@ import com.jess.arms.integration.AppManager; ...@@ -15,7 +15,9 @@ import com.jess.arms.integration.AppManager;
import com.jess.arms.mvp.BasePresenter; import com.jess.arms.mvp.BasePresenter;
import com.jess.arms.utils.RxLifecycleUtils; import com.jess.arms.utils.RxLifecycleUtils;
import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.List;
import java.util.Map; import java.util.Map;
import javax.inject.Inject; import javax.inject.Inject;
...@@ -45,9 +47,12 @@ public class PurchaseListPresenter extends BasePresenter<PurchaseListContract.Mo ...@@ -45,9 +47,12 @@ public class PurchaseListPresenter extends BasePresenter<PurchaseListContract.Mo
@Inject @Inject
AppManager mAppManager; AppManager mAppManager;
private List<OrderBean> orderList;
@Inject @Inject
public PurchaseListPresenter(PurchaseListContract.Model model, PurchaseListContract.View rootView) { public PurchaseListPresenter(PurchaseListContract.Model model, PurchaseListContract.View rootView) {
super(model, rootView); super(model, rootView);
orderList = new ArrayList<>();
} }
@Override @Override
...@@ -64,7 +69,6 @@ public class PurchaseListPresenter extends BasePresenter<PurchaseListContract.Mo ...@@ -64,7 +69,6 @@ public class PurchaseListPresenter extends BasePresenter<PurchaseListContract.Mo
Constant.addRestaurantId(map); Constant.addRestaurantId(map);
Constant.addBrandId(map); Constant.addBrandId(map);
Constant.addPageSize(map); Constant.addPageSize(map);
if (TextUtil.isNotEmptyOrNullOrUndefined(orderNo)) { if (TextUtil.isNotEmptyOrNullOrUndefined(orderNo)) {
map.put("orderNo", orderNo); map.put("orderNo", orderNo);
} }
...@@ -82,12 +86,12 @@ public class PurchaseListPresenter extends BasePresenter<PurchaseListContract.Mo ...@@ -82,12 +86,12 @@ public class PurchaseListPresenter extends BasePresenter<PurchaseListContract.Mo
.subscribe(new ErrorHandleSubscriber<PurchaseOrderResultBean>(mErrorHandler) { .subscribe(new ErrorHandleSubscriber<PurchaseOrderResultBean>(mErrorHandler) {
@Override @Override
public void onNext(@NonNull PurchaseOrderResultBean info) { public void onNext(@NonNull PurchaseOrderResultBean info) {
if (info.isSuccess() && info.getData() != null) { if (info.isSuccess()) {
if (info.getData().getCount() > 0) { if (pageIndex == 0) {
mRootView.loadOrderList(info.getData().getList()); orderList.clear();
} else if (pageIndex <= 0) {
mRootView.loadFail();
} }
orderList.addAll(info.getData().getList());
mRootView.loadOrderList(orderList);
} else if (TextUtil.isNotEmptyOrNullOrUndefined(info.getErrMsg())) { } else if (TextUtil.isNotEmptyOrNullOrUndefined(info.getErrMsg())) {
mRootView.showMessage(info.getErrMsg()); mRootView.showMessage(info.getErrMsg());
mRootView.loadFail(); mRootView.loadFail();
......
...@@ -221,6 +221,11 @@ public class SendMsgPresenter extends BasePresenter<SendMsgContract.Model, SendM ...@@ -221,6 +221,11 @@ public class SendMsgPresenter extends BasePresenter<SendMsgContract.Model, SendM
return currentSelectedSupplier; return currentSelectedSupplier;
} }
public void setSendSuccess(){
SendSupplierMsgBean sendSupplierMsgBean = sendSupplierMsgBeans.get(currentSelectedSupplier);
sendSupplierMsgBean.setSend(true);
}
/** /**
* 獲取供應商聯繫方式 * 獲取供應商聯繫方式
* *
......
package com.gingersoft.supply_chain.mvp.presenter;
import android.app.Application;
import android.util.Log;
import com.gingersoft.gsa.cloud.common.bean.BaseResult;
import com.gingersoft.gsa.cloud.common.utils.CollectionUtils;
import com.gingersoft.gsa.cloud.common.utils.other.TextUtil;
import com.gingersoft.supply_chain.mvp.bean.SupplierResultBean;
import com.gingersoft.supply_chain.mvp.bean.WareHouseListBean;
import com.gingersoft.supply_chain.mvp.content.Constant;
import com.jess.arms.integration.AppManager;
import com.jess.arms.di.scope.FragmentScope;
import com.jess.arms.mvp.BasePresenter;
import com.jess.arms.http.imageloader.ImageLoader;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.schedulers.Schedulers;
import me.jessyan.rxerrorhandler.core.RxErrorHandler;
import me.jessyan.rxerrorhandler.handler.ErrorHandleSubscriber;
import javax.inject.Inject;
import com.gingersoft.supply_chain.mvp.contract.WareHouseListContract;
import com.jess.arms.utils.RxLifecycleUtils;
import org.w3c.dom.Text;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* ================================================
* Description:
* <p>
* Created by MVPArmsTemplate on 01/06/2021 15:37
* <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
* <a href="https://github.com/JessYanCoding">Follow me</a>
* <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
* <a href="https://github.com/JessYanCoding/MVPArms/wiki">See me</a>
* <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
* ================================================
*/
@FragmentScope
public class WareHouseListPresenter extends BasePresenter<WareHouseListContract.Model, WareHouseListContract.View> {
@Inject
RxErrorHandler mErrorHandler;
@Inject
Application mApplication;
@Inject
ImageLoader mImageLoader;
@Inject
AppManager mAppManager;
public final int SORT_UNIT_PRICE = 1;
public final int SORT_WAREHOUSING_NUM = 2;
public final int SORT_TOTAL_AMOUNT = 3;
private WareHouseListBean.WareHousingDataBean data;
@Inject
public WareHouseListPresenter(WareHouseListContract.Model model, WareHouseListContract.View rootView) {
super(model, rootView);
}
@Override
public void onDestroy() {
super.onDestroy();
this.mErrorHandler = null;
this.mAppManager = null;
this.mImageLoader = null;
this.mApplication = null;
}
/**
* 跟進類型排序
*
* @param type 類型
* @param isAscending 升序或降序
*/
public void sortByType(int type, boolean isAscending) {
if (data == null || data.getPurchaseWarehousingOrderDetailsVOS() == null) {
return;
}
if (type == SORT_UNIT_PRICE) {
Collections.sort(data.getPurchaseWarehousingOrderDetailsVOS(), (o1, o2) -> {
if (isAscending) {
return (int) (o1.getFoodPrice() - o2.getFoodPrice());
} else {
return (int) (o2.getFoodPrice() - o1.getFoodPrice());
}
});
} else if (type == SORT_WAREHOUSING_NUM) {
//庫存數量
Collections.sort(data.getPurchaseWarehousingOrderDetailsVOS(), (o1, o2) -> {
if (isAscending) {
return o1.getFoodNum() - o2.getFoodNum();
} else {
return o2.getFoodNum() - o1.getFoodNum();
}
});
} else if (type == SORT_TOTAL_AMOUNT) {
//總價
Collections.sort(data.getPurchaseWarehousingOrderDetailsVOS(), (o1, o2) -> {
if (isAscending) {
return (int) (o1.getFoodAmount() - o2.getFoodAmount());
} else {
return (int) (o2.getFoodAmount() - o1.getFoodAmount());
}
});
}
mRootView.loadListInfo(data.getPurchaseWarehousingOrderDetailsVOS());
}
public void getWarehousing(int pageIndex, String foodName) {
Map<String, Object> map = new HashMap<>(5);
if (TextUtil.isNotEmptyOrNullOrUndefined(foodName)) {
map.put("name", foodName);
}
Constant.addRestaurantId(map);
Constant.addBrandId(map);
Constant.addPageSize(map);
map.put("pageIndex", pageIndex * Constant.PAGE_SIZE);
mModel.getWarehousing(map)
.subscribeOn(Schedulers.io())
.doOnSubscribe(disposable -> mRootView.showLoading(Constant.GET_INFO_LOADING))
.subscribeOn(AndroidSchedulers.mainThread())
.observeOn(AndroidSchedulers.mainThread())
.doAfterTerminate(() -> mRootView.hideLoading())
.compose(RxLifecycleUtils.bindToLifecycle(mRootView))
.subscribe(new ErrorHandleSubscriber<WareHouseListBean>(mErrorHandler) {
@Override
public void onNext(WareHouseListBean wareHouseListBean) {
if (wareHouseListBean.isSuccess()) {
mRootView.finishLoad();
if (data == null || pageIndex == 0) {
data = new WareHouseListBean.WareHousingDataBean();
data.setPurchaseWarehousingOrderDetailsVOS(new ArrayList<>());
}
data.setTotal(wareHouseListBean.getData().getTotal());
data.getPurchaseWarehousingOrderDetailsVOS().addAll(wareHouseListBean.getData().getPurchaseWarehousingOrderDetailsVOS());
mRootView.loadWarehousingInfo(data);
} else if (TextUtil.isNotEmptyOrNullOrUndefined(wareHouseListBean.getErrMsg())) {
mRootView.showMessage(wareHouseListBean.getErrMsg());
mRootView.loadFail();
} else {
mRootView.showMessage(Constant.GET_INFO_ERROR);
mRootView.loadFail();
}
}
@Override
public void onError(Throwable t) {
super.onError(t);
mRootView.loadFail();
}
});
}
}
package com.gingersoft.supply_chain.mvp.presenter;
import android.app.Application;
import com.jess.arms.integration.AppManager;
import com.jess.arms.di.scope.FragmentScope;
import com.jess.arms.mvp.BasePresenter;
import com.jess.arms.http.imageloader.ImageLoader;
import me.jessyan.rxerrorhandler.core.RxErrorHandler;
import javax.inject.Inject;
import com.gingersoft.supply_chain.mvp.contract.WareHousingDetailsContract;
/**
* ================================================
* Description:
* <p>
* Created by MVPArmsTemplate on 01/12/2021 14:28
* <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
* <a href="https://github.com/JessYanCoding">Follow me</a>
* <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
* <a href="https://github.com/JessYanCoding/MVPArms/wiki">See me</a>
* <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
* ================================================
*/
@FragmentScope
public class WareHousingDetailsPresenter extends BasePresenter<WareHousingDetailsContract.Model, WareHousingDetailsContract.View> {
@Inject
RxErrorHandler mErrorHandler;
@Inject
Application mApplication;
@Inject
ImageLoader mImageLoader;
@Inject
AppManager mAppManager;
@Inject
public WareHousingDetailsPresenter(WareHousingDetailsContract.Model model, WareHousingDetailsContract.View rootView) {
super(model, rootView);
}
@Override
public void onDestroy() {
super.onDestroy();
this.mErrorHandler = null;
this.mAppManager = null;
this.mImageLoader = null;
this.mApplication = null;
}
}
...@@ -8,6 +8,7 @@ import com.gingersoft.supply_chain.mvp.bean.MeasurementUnitBean; ...@@ -8,6 +8,7 @@ import com.gingersoft.supply_chain.mvp.bean.MeasurementUnitBean;
import com.gingersoft.supply_chain.mvp.bean.OrderCategoryBean; import com.gingersoft.supply_chain.mvp.bean.OrderCategoryBean;
import com.gingersoft.supply_chain.mvp.bean.PurchaseOrderResultBean; import com.gingersoft.supply_chain.mvp.bean.PurchaseOrderResultBean;
import com.gingersoft.supply_chain.mvp.bean.SupplierResultBean; import com.gingersoft.supply_chain.mvp.bean.SupplierResultBean;
import com.gingersoft.supply_chain.mvp.bean.WareHouseListBean;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
...@@ -24,6 +25,7 @@ import retrofit2.http.Headers; ...@@ -24,6 +25,7 @@ import retrofit2.http.Headers;
import retrofit2.http.Multipart; import retrofit2.http.Multipart;
import retrofit2.http.POST; import retrofit2.http.POST;
import retrofit2.http.Part; import retrofit2.http.Part;
import retrofit2.http.PartMap;
import retrofit2.http.Query; import retrofit2.http.Query;
import retrofit2.http.QueryMap; import retrofit2.http.QueryMap;
import retrofit2.http.QueryName; import retrofit2.http.QueryName;
...@@ -159,7 +161,7 @@ public interface SupplierServer { ...@@ -159,7 +161,7 @@ public interface SupplierServer {
@Headers({"Domain-Name: ricepon-purchase"}) @Headers({"Domain-Name: ricepon-purchase"})
@Multipart @Multipart
@POST("purchaseFood/image/upload" + RetrofitUrlManager.IDENTIFICATION_PATH_SIZE + 2) @POST("purchaseFood/image/upload" + RetrofitUrlManager.IDENTIFICATION_PATH_SIZE + 2)
Observable<BaseResult> upLoadPic(@Part List<MultipartBody.Part> parts); Observable<BaseResult> upLoadPic(@Part List<MultipartBody.Part> parts, @PartMap Map<String, Object> map);
/** /**
* 新增食品 * 新增食品
...@@ -182,6 +184,16 @@ public interface SupplierServer { ...@@ -182,6 +184,16 @@ public interface SupplierServer {
Observable<FoodListInfoBean> getFoodIngredientsData(@QueryMap Map<String, Object> map); Observable<FoodListInfoBean> getFoodIngredientsData(@QueryMap Map<String, Object> map);
/** /**
* 根據食材id獲取食材詳情
*
* @param map
* @return
*/
@Headers({"Domain-Name: ricepon-purchase"})
@GET("purchaseFood/get" + RetrofitUrlManager.IDENTIFICATION_PATH_SIZE + 2)
Observable<BaseResult> getFoodIngredientsDetails(@QueryMap Map<String, Object> map);
/**
* 和上面的是同一個接口,返回數據不一致 * 和上面的是同一個接口,返回數據不一致
* *
* @param map * @param map
...@@ -202,6 +214,14 @@ public interface SupplierServer { ...@@ -202,6 +214,14 @@ public interface SupplierServer {
Observable<BaseResult> updateFood(@Body RequestBody requestBody); Observable<BaseResult> updateFood(@Body RequestBody requestBody);
/** /**
* 刪除食材
*/
@FormUrlEncoded
@Headers({"Domain-Name: ricepon-purchase"})
@POST("purchaseFood/delete" + RetrofitUrlManager.IDENTIFICATION_PATH_SIZE + 2)
Observable<BaseResult> deleteFood(@Field("id") int id);
/**
* 獲取採購單列表 * 獲取採購單列表
* *
* @param map * @param map
...@@ -289,7 +309,7 @@ public interface SupplierServer { ...@@ -289,7 +309,7 @@ public interface SupplierServer {
Observable<BaseResult> addWarehouse(@Body RequestBody requestBody); Observable<BaseResult> addWarehouse(@Body RequestBody requestBody);
/** /**
* 獲取訂單詳情 * 獲取訂單列表
* *
* @return * @return
*/ */
...@@ -305,12 +325,32 @@ public interface SupplierServer { ...@@ -305,12 +325,32 @@ public interface SupplierServer {
@GET("basicUnitType/list" + RetrofitUrlManager.IDENTIFICATION_PATH_SIZE + 2) @GET("basicUnitType/list" + RetrofitUrlManager.IDENTIFICATION_PATH_SIZE + 2)
Observable<BaseResult> getDeputyUnitList(@Query("brandId") int brandId, @Query("restaurantId") int restaurantId); Observable<BaseResult> getDeputyUnitList(@Query("brandId") int brandId, @Query("restaurantId") int restaurantId);
/** /**
* 批量修改副單位 * 批量修改副單位
*/ */
@Headers({"Domain-Name: ricepon-purchase"}) @Headers({"Domain-Name: ricepon-purchase"})
@POST("basicUnitType/set" + RetrofitUrlManager.IDENTIFICATION_PATH_SIZE + 2) @POST("foodUnit/set" + RetrofitUrlManager.IDENTIFICATION_PATH_SIZE + 2)
Observable<BaseResult> updateDeputyUnitList(@Body RequestBody requestBody); Observable<BaseResult> updateDeputyUnitList(@Body RequestBody requestBody);
/**
* 批量修改副單位
*/
@Headers({"Domain-Name: ricepon-purchase"})
@POST("foodUnit/update" + RetrofitUrlManager.IDENTIFICATION_PATH_SIZE + 2)
Observable<BaseResult> updateDeputyUnit(@Body RequestBody requestBody);
/**
* 查詢庫存列表
*/
@Headers({"Domain-Name: ricepon-purchase"})
@GET("purchaseWarehousingOrder/details/list" + RetrofitUrlManager.IDENTIFICATION_PATH_SIZE + 2)
Observable<WareHouseListBean> getWarehousing(@QueryMap Map<String, Object> map);
/**
* 添加副單位快捷輸入
*/
@Headers({"Domain-Name: ricepon-purchase"})
@POST("basicUnitType/add" + RetrofitUrlManager.IDENTIFICATION_PATH_SIZE + 2)
Observable<BaseResult> addDeputyUnitInput(@Body RequestBody requestBody);
} }
...@@ -2,6 +2,10 @@ package com.gingersoft.supply_chain.mvp.ui.activity; ...@@ -2,6 +2,10 @@ package com.gingersoft.supply_chain.mvp.ui.activity;
import android.content.Intent; import android.content.Intent;
import android.os.Bundle; import android.os.Bundle;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.widget.EditText;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
...@@ -12,24 +16,19 @@ import com.gingersoft.supply_chain.di.component.DaggerSupplyChainMainComponent; ...@@ -12,24 +16,19 @@ import com.gingersoft.supply_chain.di.component.DaggerSupplyChainMainComponent;
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;
import com.gingersoft.supply_chain.mvp.ui.fragment.food.FoodUnitPageFragment;
import com.gingersoft.supply_chain.mvp.utils.NotDispatchListener;
import com.jess.arms.base.BaseFragmentActivity; import com.jess.arms.base.BaseFragmentActivity;
import com.jess.arms.di.component.AppComponent; import com.jess.arms.di.component.AppComponent;
import com.jess.arms.utils.ArmsUtils; import com.jess.arms.utils.ArmsUtils;
import com.jess.arms.utils.DeviceUtils;
import com.xuexiang.rxutil2.rxjava.RxJavaUtils;
import static com.jess.arms.utils.Preconditions.checkNotNull; import static com.jess.arms.utils.Preconditions.checkNotNull;
/** /**
* ================================================ * Description:供應鏈首頁
* Description:
* <p>
* Created by MVPArmsTemplate on 11/19/2020 14:45
* <a href="mailto:jess.yan.effort@gmail.com">Contact me</a>
* <a href="https://github.com/JessYanCoding">Follow me</a>
* <a href="https://github.com/JessYanCoding/MVPArms">Star me</a>
* <a href="https://github.com/JessYanCoding/MVPArms/wiki">See me</a>
* <a href="https://github.com/JessYanCoding/MVPArmsTemplate">模版请保持更新</a>
* ================================================
*/ */
public class SupplyChainMainActivity extends BaseFragmentActivity<SupplyChainMainPresenter> implements SupplyChainMainContract.View { public class SupplyChainMainActivity extends BaseFragmentActivity<SupplyChainMainPresenter> implements SupplyChainMainContract.View {
...@@ -54,6 +53,46 @@ public class SupplyChainMainActivity extends BaseFragmentActivity<SupplyChainMai ...@@ -54,6 +53,46 @@ public class SupplyChainMainActivity extends BaseFragmentActivity<SupplyChainMai
} }
@Override @Override
public boolean dispatchTouchEvent(MotionEvent ev) {
if(getTopFragment() instanceof NotDispatchListener){
return super.dispatchTouchEvent(ev);
}
if (ev.getAction() == MotionEvent.ACTION_DOWN) {
// 获得当前得到焦点的View,一般情况下就是EditText(特殊情况就是轨迹求或者实体案件会移动焦点)
View v = getCurrentFocus();
if (isShouldHideInput(v, ev)) {
if(v instanceof EditText){
//不然不會觸發焦點監聽事件
v.clearFocus();
}
DeviceUtils.hideSoftKeyboard(mContext, getWindow().getDecorView());
}
}
return super.dispatchTouchEvent(ev);
}
/**
* 根据EditText所在坐标和用户点击的坐标相对比,来判断是否隐藏键盘,因为当用户点击EditText时没必要隐藏
*
* @param v
* @param event
* @return
*/
private boolean isShouldHideInput(View v, MotionEvent event) {
if ((v instanceof EditText)) {
int[] l = {0, 0};
v.getLocationInWindow(l);
int left = l[0], top = l[1], bottom = top + v.getHeight(), right = left
+ v.getWidth();
// 点击EditText的事件,忽略它。
return event.getX() <= left || event.getX() >= right
|| event.getY() <= top || event.getY() >= bottom;
}
// 如果焦点不是EditText则忽略,这个发生在视图刚绘制完,第一个焦点不在EditView上,和用户用轨迹球选择其他的焦点
return false;
}
@Override
public void initIntent() { public void initIntent() {
} }
......
...@@ -37,10 +37,7 @@ public class DeputyUnitAdapter extends BaseQuickAdapter<DeputyUnitBean, BaseView ...@@ -37,10 +37,7 @@ public class DeputyUnitAdapter extends BaseQuickAdapter<DeputyUnitBean, BaseView
EditText edConversionMultiple = viewHolder.getView(R.id.ed_deputy_unit_conversion_multiple); EditText edConversionMultiple = viewHolder.getView(R.id.ed_deputy_unit_conversion_multiple);
viewHolder.setText(R.id.tv_deputy_unit_title, "副單位" + (viewHolder.getAdapterPosition() + 1)); viewHolder.setText(R.id.tv_deputy_unit_title, "副單位" + (viewHolder.getAdapterPosition() + 1));
viewHolder.setText(R.id.ed_deputy_unit_name, item.getDeputyUnit()); viewHolder.setText(R.id.ed_deputy_unit_name, item.getDeputyUnit());
viewHolder.setText(R.id.ed_deputy_unit_conversion_multiple, item.getConversionMultiple()); viewHolder.setText(R.id.ed_deputy_unit_conversion_multiple, item.getConversionMultiple() + "");
if (TextUtil.isEmptyOrNullOrUndefined(item.getDeputyUnit())) {
edDeputyUnitName.requestFocus();
}
TextWatcher deputyUnitNameWatcher = new TextWatcher() { TextWatcher deputyUnitNameWatcher = new TextWatcher() {
@Override @Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) { public void beforeTextChanged(CharSequence s, int start, int count, int after) {
...@@ -73,10 +70,15 @@ public class DeputyUnitAdapter extends BaseQuickAdapter<DeputyUnitBean, BaseView ...@@ -73,10 +70,15 @@ public class DeputyUnitAdapter extends BaseQuickAdapter<DeputyUnitBean, BaseView
@Override @Override
public void afterTextChanged(Editable s) { public void afterTextChanged(Editable s) {
DeputyUnitBean deputyUnitBean = getData().get(viewHolder.getAdapterPosition()); DeputyUnitBean deputyUnitBean = getData().get(viewHolder.getAdapterPosition());
deputyUnitBean.setConversionMultiple(s + ""); if (TextUtil.isNotEmptyOrNullOrUndefined(s + "")) {
deputyUnitBean.setConversionMultiple(Double.parseDouble(s + ""));
}
} }
}; };
setFocusChangeListener(edConversionMultiple, conversionMultipleWatcher); setFocusChangeListener(edConversionMultiple, conversionMultipleWatcher);
if (TextUtil.isEmptyOrNullOrUndefined(item.getDeputyUnit())) {
edDeputyUnitName.requestFocus();
}
} }
private void setFocusChangeListener(EditText edDeputyUnitName, TextWatcher deputyUnitNameWatcher) { private void setFocusChangeListener(EditText edDeputyUnitName, TextWatcher deputyUnitNameWatcher) {
......
...@@ -30,8 +30,8 @@ public class OrderCategoryAdapter extends BaseQuickAdapter<OrderCategoryBean.Foo ...@@ -30,8 +30,8 @@ public class OrderCategoryAdapter extends BaseQuickAdapter<OrderCategoryBean.Foo
private Context context; private Context context;
private int lastSelectIndex = -1; private int lastSelectIndex = -1;
public final int PRIMARY_CATEGORY = 1; public static final int PRIMARY_CATEGORY = 1;
public final int SECOND_CATEGORY = 2; public static final int SECOND_CATEGORY = 2;
/** /**
* 當前顯示的是幾級分類 * 當前顯示的是幾級分類
*/ */
......
package com.gingersoft.supply_chain.mvp.ui.adapter; package com.gingersoft.supply_chain.mvp.ui.adapter;
import android.content.Context; import android.content.Context;
import android.text.Editable;
import android.text.InputFilter;
import android.text.TextWatcher;
import android.view.View; import android.view.View;
import android.widget.EditText;
import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.RecyclerView; import androidx.recyclerview.widget.RecyclerView;
...@@ -9,13 +13,24 @@ import androidx.recyclerview.widget.RecyclerView; ...@@ -9,13 +13,24 @@ import androidx.recyclerview.widget.RecyclerView;
import com.chad.library.adapter.base.BaseQuickAdapter; import com.chad.library.adapter.base.BaseQuickAdapter;
import com.chad.library.adapter.base.viewholder.BaseViewHolder; import com.chad.library.adapter.base.viewholder.BaseViewHolder;
import com.gingersoft.gsa.cloud.common.utils.MoneyUtil; import com.gingersoft.gsa.cloud.common.utils.MoneyUtil;
import com.gingersoft.gsa.cloud.common.utils.inputFilter.MoneyInputFilter;
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.DeputyUnitBean;
import com.gingersoft.supply_chain.mvp.bean.PurchaseOrderDetailsBean; import com.gingersoft.supply_chain.mvp.bean.PurchaseOrderDetailsBean;
import com.xuexiang.rxutil2.rxjava.RxJavaUtils;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
import java.util.List; import java.util.List;
import java.util.concurrent.TimeUnit;
import io.reactivex.Observable;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.Disposable;
import io.reactivex.functions.Consumer;
import io.reactivex.schedulers.Schedulers;
/** /**
* @author 宇航. * @author 宇航.
...@@ -27,6 +42,11 @@ import java.util.List; ...@@ -27,6 +42,11 @@ import java.util.List;
public class OrderDetailsFoodAdapter extends BaseQuickAdapter<PurchaseOrderDetailsBean.PurchaseOrderDetailsInfoVosBean, BaseViewHolder> { public class OrderDetailsFoodAdapter extends BaseQuickAdapter<PurchaseOrderDetailsBean.PurchaseOrderDetailsInfoVosBean, BaseViewHolder> {
private Context context; private Context context;
private OnValueChangeListener onValueChangeListener;
public void setOnValueChangeListener(OnValueChangeListener onValueChangeListener) {
this.onValueChangeListener = onValueChangeListener;
}
public OrderDetailsFoodAdapter(Context context, @Nullable List<PurchaseOrderDetailsBean.PurchaseOrderDetailsInfoVosBean> data) { public OrderDetailsFoodAdapter(Context context, @Nullable List<PurchaseOrderDetailsBean.PurchaseOrderDetailsInfoVosBean> data) {
super(R.layout.item_order_details_food, data); super(R.layout.item_order_details_food, data);
...@@ -35,35 +55,111 @@ public class OrderDetailsFoodAdapter extends BaseQuickAdapter<PurchaseOrderDetai ...@@ -35,35 +55,111 @@ public class OrderDetailsFoodAdapter extends BaseQuickAdapter<PurchaseOrderDetai
@Override @Override
protected void convert(@NotNull BaseViewHolder viewHolder, PurchaseOrderDetailsBean.PurchaseOrderDetailsInfoVosBean item) { protected void convert(@NotNull BaseViewHolder viewHolder, PurchaseOrderDetailsBean.PurchaseOrderDetailsInfoVosBean item) {
viewHolder.setText(R.id.tv_order_no, item.getOrderNo() + "");
viewHolder.setText(R.id.tv_order_details_item_food_name, item.getName()); viewHolder.setText(R.id.tv_order_details_item_food_name, item.getName());
viewHolder.setText(R.id.tv_order_details_item_purchasing_unit, item.getUnit_content()); viewHolder.setText(R.id.tv_order_details_item_purchasing_unit, item.getUnit_content());
viewHolder.setText(R.id.tv_order_details_item_purchasing_unit_price, "$" + item.getFoodPrice()); viewHolder.setText(R.id.tv_order_details_item_purchasing_unit_price, "$" + item.getFoodPrice());
viewHolder.setText(R.id.tv_order_details_item_num, String.valueOf(item.getFoodQuantity())); viewHolder.setText(R.id.tv_order_details_item_num, String.valueOf(item.getFoodQuantity()));
//保存下來總價,用於計算所有食品的總價 //食品的總價
item.setTotalAmount(MoneyUtil.priceCalculation(item.getFoodPrice(), item.getFoodQuantity()));
viewHolder.setText(R.id.tv_order_details_item_purchasing_total_amount, "$" + item.getTotalAmount()); viewHolder.setText(R.id.tv_order_details_item_purchasing_total_amount, "$" + item.getTotalAmount());
//入庫單價 //拿到單價
// double unitPrice = Integer.parseInt(item.getWareHouseBeans().get(0).getValue());
//拿到數量
// double foodQuantity = Integer.parseInt(item.getWareHouseBeans().get(1).getValue());
//設置入庫總價,總價是由用戶輸入的單價*基本單位數
viewHolder.setText(R.id.tv_order_details_item_warehouse_total_amount, String.format(context.getString(R.string.amount_string_s), MoneyUtil.formatDouble(item.getWarehousingAmount())));
RecyclerView rvWarehouseUnit = viewHolder.getView(R.id.rv_warehouse_unit); RecyclerView rvWarehouseUnit = viewHolder.getView(R.id.rv_warehouse_unit);
if (item.getWareHouseBeans() != null) { if (item.getFoodUnits() != null) {
rvWarehouseUnit.setVisibility(View.VISIBLE); rvWarehouseUnit.setVisibility(View.VISIBLE);
rvWarehouseUnit.setLayoutManager(new GridLayoutManager(context, 3)); rvWarehouseUnit.setLayoutManager(new GridLayoutManager(context, 3));
WareHouseUnitAdapter wareHouseUnitAdapter = new WareHouseUnitAdapter(item.getWareHouseBeans()); WareHouseUnitAdapter wareHouseUnitAdapter = new WareHouseUnitAdapter(item.getFoodUnits(), viewHolder.getAdapterPosition(), (position, value) -> {
PurchaseOrderDetailsBean.PurchaseOrderDetailsInfoVosBean purchaseOrderDetailsInfoVosBean = getData().get(viewHolder.getAdapterPosition());
//獲取入庫單位集合,用第0位(單價)乘以第一位(主單位數量),得到現在的入庫價格
List<DeputyUnitBean> deputyUnitBeans = purchaseOrderDetailsInfoVosBean.getFoodUnits();
if (deputyUnitBeans != null && deputyUnitBeans.size() > 1) {
double currentWareHouseAmount = MoneyUtil.priceCalculation(deputyUnitBeans.get(0).getDeputyValue(), deputyUnitBeans.get(1).getDeputyValue());
//現在的價格減去之前的價格,得到增加了多少
double changeAmount = MoneyUtil.sub(currentWareHouseAmount, purchaseOrderDetailsInfoVosBean.getWarehousingAmount());
if (purchaseOrderDetailsInfoVosBean.isChecked()) {
//调用接口,修改外部總金額
onValueChangeListener.onValueChange(position, changeAmount);
}
//保存最新的金額數據
purchaseOrderDetailsInfoVosBean.setWarehousingAmount(currentWareHouseAmount);
viewHolder.setText(R.id.tv_order_details_item_warehouse_total_amount, currentWareHouseAmount + "");
}
});
rvWarehouseUnit.setAdapter(wareHouseUnitAdapter); rvWarehouseUnit.setAdapter(wareHouseUnitAdapter);
} else { } else {
rvWarehouseUnit.setVisibility(View.GONE); rvWarehouseUnit.setVisibility(View.GONE);
} }
viewHolder.setBackgroundResource(R.id.iv_order_details_item_food_select, item.isChecked() ? R.drawable.ic_checkbox_checked : R.drawable.ic_checkbox_uncheck); viewHolder.setBackgroundResource(R.id.iv_order_details_item_food_select, item.isChecked() ? R.drawable.ic_checkbox_checked : R.drawable.ic_checkbox_uncheck);
} }
private static class WareHouseUnitAdapter extends BaseQuickAdapter<PurchaseOrderDetailsBean.PurchaseOrderDetailsInfoVosBean.WareHouseBean, BaseViewHolder> { private static class WareHouseUnitAdapter extends BaseQuickAdapter<DeputyUnitBean, BaseViewHolder> {
public WareHouseUnitAdapter(List<PurchaseOrderDetailsBean.PurchaseOrderDetailsInfoVosBean.WareHouseBean> wareHouseBeans) { private int parentPosition;
private OnValueChangeListener onValueChangeListener;
private Disposable mDisposable;
public WareHouseUnitAdapter(List<DeputyUnitBean> wareHouseBeans, int parentPosition, OnValueChangeListener onValueChangeListener) {
super(R.layout.item_receiving_unit, wareHouseBeans); super(R.layout.item_receiving_unit, wareHouseBeans);
this.parentPosition = parentPosition;
this.onValueChangeListener = onValueChangeListener;
} }
@Override @Override
protected void convert(@NotNull BaseViewHolder viewHolder, PurchaseOrderDetailsBean.PurchaseOrderDetailsInfoVosBean.WareHouseBean wareHouseBean) { protected void convert(@NotNull BaseViewHolder viewHolder, DeputyUnitBean wareHouseBean) {
viewHolder.setText(R.id.tv_receiving_unit_title, wareHouseBean.getTitle()); viewHolder.setText(R.id.tv_receiving_unit_title, wareHouseBean.getDeputyUnit());
viewHolder.setText(R.id.ed_receiving_unit_value, wareHouseBean.getValue()); EditText edWareHouseValue = viewHolder.getView(R.id.ed_receiving_unit_value);
edWareHouseValue.setFilters(new InputFilter[]{new MoneyInputFilter()});
edWareHouseValue.setText(MoneyUtil.formatDouble(wareHouseBean.getDeputyValue()));
TextWatcher textWatcher = new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable editable) {
String s = editable + "";
if (TextUtil.isEmptyOrNullOrUndefined(s)) {
s = "0";
}
DeputyUnitBean item = getData().get(viewHolder.getLayoutPosition());
item.setDeputyValue(Double.parseDouble(s + ""));
if (viewHolder.getAdapterPosition() == 0 || viewHolder.getAdapterPosition() == 1) {
//如果修改的是單價,或者是主單位數量,就要刷新總價
if (mDisposable != null) {
mDisposable.dispose();
}
String finalS = s;
mDisposable = RxJavaUtils.delay(1, l -> onValueChangeListener.onValueChange(parentPosition, Double.parseDouble(finalS)));
}
}
};
edWareHouseValue.setOnFocusChangeListener((v, hasFocus) -> {
if (hasFocus) {
edWareHouseValue.addTextChangedListener(textWatcher);
} else {
edWareHouseValue.removeTextChangedListener(textWatcher);
}
});
} }
} }
public interface OnValueChangeListener {
/**
* 入庫價格發生變化回調接口
*
* @param position 入庫食品的下標
* @param value 增加了多少價格,如果是減少,則改為負的
*/
void onValueChange(int position, double value);
}
} }
package com.gingersoft.supply_chain.mvp.ui.adapter; package com.gingersoft.supply_chain.mvp.ui.adapter;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.chad.library.adapter.base.BaseQuickAdapter; import com.chad.library.adapter.base.BaseQuickAdapter;
import com.chad.library.adapter.base.viewholder.BaseViewHolder; import com.chad.library.adapter.base.viewholder.BaseViewHolder;
import com.gingersoft.gsa.cloud.common.utils.time.TimeUtils; import com.gingersoft.gsa.cloud.common.utils.time.TimeUtils;
import com.gingersoft.supply_chain.R; import com.gingersoft.supply_chain.R;
import com.gingersoft.supply_chain.mvp.bean.NewPurchaseOrderBean;
import com.gingersoft.supply_chain.mvp.bean.OrderBean; import com.gingersoft.supply_chain.mvp.bean.OrderBean;
import com.gingersoft.supply_chain.mvp.bean.PurchaseOrderDetailsBean;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
...@@ -27,15 +25,18 @@ public class PurchaseOrderAdapter extends BaseQuickAdapter<OrderBean, BaseViewHo ...@@ -27,15 +25,18 @@ public class PurchaseOrderAdapter extends BaseQuickAdapter<OrderBean, BaseViewHo
public PurchaseOrderAdapter(@Nullable List<OrderBean> data) { public PurchaseOrderAdapter(@Nullable List<OrderBean> data) {
super(R.layout.item_purchase_order, data); super(R.layout.item_purchase_order, data);
addChildClickViewIds(R.id.iv_supplier_delete, R.id.btn_purchase_send, R.id.btn_purchase_buy_again, R.id.btn_receiver_goods); addChildClickViewIds(R.id.btn_purchase_send, R.id.btn_purchase_buy_again, R.id.btn_receiver_goods);
} }
@Override @Override
protected void convert(@NotNull BaseViewHolder viewHolder, OrderBean purchaseOrderBean) { protected void convert(@NotNull BaseViewHolder viewHolder, OrderBean purchaseOrderBean) {
viewHolder.setText(R.id.tv_purchase_order_no, "" + purchaseOrderBean.getOrderNo()); viewHolder.setText(R.id.tv_purchase_order_supplier_name, purchaseOrderBean.getSupplierName());
viewHolder.setText(R.id.tv_purchase_order_no, purchaseOrderBean.getOrderNo() + "");
viewHolder.setText(R.id.tv_purchase_order_create_time, TimeUtils.getTime(purchaseOrderBean.getCreateTime(), TimeUtils.DEFAULT_DATE_FORMAT_YMDHM)); viewHolder.setText(R.id.tv_purchase_order_create_time, TimeUtils.getTime(purchaseOrderBean.getCreateTime(), TimeUtils.DEFAULT_DATE_FORMAT_YMDHM));
viewHolder.setText(R.id.tv_purchase_order_goods_num, purchaseOrderBean.getPurchaseFoodCount() + ""); viewHolder.setText(R.id.tv_purchase_order_goods_num, purchaseOrderBean.getPurchaseFoodCount() + "");
viewHolder.setText(R.id.tv_purchase_order_goods, purchaseOrderBean.getName()); viewHolder.setText(R.id.tv_purchase_order_goods, purchaseOrderBean.getName());
viewHolder.setText(R.id.tv_purchase_order_total_price, purchaseOrderBean.getTotalAmount() + ""); viewHolder.setText(R.id.tv_purchase_order_total_price, purchaseOrderBean.getTotalAmount() + "");
viewHolder.setText(R.id.btn_receiver_goods, PurchaseOrderDetailsBean.getStringByOrderState(purchaseOrderBean.getStatus()));
} }
} }
...@@ -23,11 +23,13 @@ import android.widget.AdapterView; ...@@ -23,11 +23,13 @@ import android.widget.AdapterView;
import androidx.recyclerview.widget.RecyclerView; import androidx.recyclerview.widget.RecyclerView;
import com.gingersoft.gsa.cloud.ui.recylcler.decorator.DividerItemDecoration;
import com.gingersoft.gsa.cloud.ui.recylcler.decorator.MarginDecoration;
import com.gingersoft.supply_chain.R; import com.gingersoft.supply_chain.R;
import com.jess.arms.utils.DeviceUtils;
/** /**
* Demo 中通用的 RecyclerView Adapter。 * RecyclerView Adapter。
* Created by sm on 2015/5/3.
*/ */
public class PurchasePageAdapter extends RecyclerView.Adapter<PurchasePageAdapter.ViewHolder> { public class PurchasePageAdapter extends RecyclerView.Adapter<PurchasePageAdapter.ViewHolder> {
...@@ -77,6 +79,7 @@ public class PurchasePageAdapter extends RecyclerView.Adapter<PurchasePageAdapte ...@@ -77,6 +79,7 @@ public class PurchasePageAdapter extends RecyclerView.Adapter<PurchasePageAdapte
itemView.setOnClickListener(this); itemView.setOnClickListener(this);
mAdapter = adapter; mAdapter = adapter;
recyclerView = itemView.findViewById(R.id.rv_purchase_list_content); recyclerView = itemView.findViewById(R.id.rv_purchase_list_content);
recyclerView.addItemDecoration(new MarginDecoration((int) DeviceUtils.dpToPixel(itemView.getContext(), 8)));
} }
@Override @Override
......
...@@ -37,7 +37,7 @@ public class SendSupplierMsgAdapter extends BaseQuickAdapter<SendSupplierMsgBean ...@@ -37,7 +37,7 @@ public class SendSupplierMsgAdapter extends BaseQuickAdapter<SendSupplierMsgBean
@Override @Override
protected void convert(@NotNull BaseViewHolder viewHolder, SendSupplierMsgBean sendSupplierMsgBean) { protected void convert(@NotNull BaseViewHolder viewHolder, SendSupplierMsgBean sendSupplierMsgBean) {
viewHolder.setText(R.id.tv_item_send_supplier_msg_supplier_name, sendSupplierMsgBean.getSupplierName()); viewHolder.setText(R.id.tv_item_send_supplier_msg_supplier_name, sendSupplierMsgBean.getSupplierName());
viewHolder.setGone(R.id.tv_supplier_send_state, !sendSupplierMsgBean.isSend());
RecyclerView rvContacts = viewHolder.getView(R.id.rv_item_send_supplier_msg); RecyclerView rvContacts = viewHolder.getView(R.id.rv_item_send_supplier_msg);
ContactsListAdapter contactsListAdapter = new ContactsListAdapter(sendSupplierMsgBean.getSupplierContacts()); ContactsListAdapter contactsListAdapter = new ContactsListAdapter(sendSupplierMsgBean.getSupplierContacts());
contactsListAdapter.setOnItemClickListener((adapter, view, position) -> { contactsListAdapter.setOnItemClickListener((adapter, view, position) -> {
......
...@@ -36,7 +36,6 @@ public class SupplierAdapter extends BaseQuickAdapter<SupplierInfoBean, BaseView ...@@ -36,7 +36,6 @@ public class SupplierAdapter extends BaseQuickAdapter<SupplierInfoBean, BaseView
@Override @Override
protected void convert(@NotNull BaseViewHolder viewHolder, SupplierInfoBean supplierBean) { protected void convert(@NotNull BaseViewHolder viewHolder, SupplierInfoBean supplierBean) {
Log.e("eee", "供應商名:" +supplierBean.getSupplierName());
viewHolder.setText(R.id.tv_supplier_name, supplierBean.getSupplierName()); viewHolder.setText(R.id.tv_supplier_name, supplierBean.getSupplierName());
viewHolder.setText(R.id.tv_supplier_address, supplierBean.getAddress()); viewHolder.setText(R.id.tv_supplier_address, supplierBean.getAddress());
viewHolder.setText(R.id.tv_supplier_phone, supplierBean.getContactInformation()); viewHolder.setText(R.id.tv_supplier_phone, supplierBean.getContactInformation());
......
...@@ -17,8 +17,10 @@ import java.util.List; ...@@ -17,8 +17,10 @@ import java.util.List;
* User: admin * User: admin
* Date: 2020/12/2 * Date: 2020/12/2
* Time: 17:36 * Time: 17:36
* Use: 採購訂單列表 * Use: 庫存訂單列表
* 最新 @{WarehousingQueryAdapter}
*/ */
@Deprecated
public class WareHousingAdapter extends BaseQuickAdapter<WareHousingOrderBean.WareHousingBean, BaseViewHolder> { public class WareHousingAdapter extends BaseQuickAdapter<WareHousingOrderBean.WareHousingBean, BaseViewHolder> {
public WareHousingAdapter() { public WareHousingAdapter() {
super(R.layout.item_ware_housing); super(R.layout.item_ware_housing);
......
package com.gingersoft.supply_chain.mvp.ui.adapter;
import android.content.Context;
import androidx.core.content.ContextCompat;
import com.chad.library.adapter.base.BaseQuickAdapter;
import com.chad.library.adapter.base.viewholder.BaseViewHolder;
import com.gingersoft.supply_chain.R;
import com.gingersoft.supply_chain.mvp.bean.WareHouseListBean;
import org.jetbrains.annotations.NotNull;
import java.util.List;
/**
* @author 宇航.
* User: admin
* Date: 2021/1/6
* Time: 16:36
* Use:庫存查詢的訂單列表
*/
public class WarehousingQueryAdapter extends BaseQuickAdapter<WareHouseListBean.WareHousingDataBean.PurchaseWarehousingOrderDetailsVOSBean, BaseViewHolder> {
private Context context;
private int[] colors = new int[]{R.color.color_f9, R.color.white};
public WarehousingQueryAdapter(Context context, List<WareHouseListBean.WareHousingDataBean.PurchaseWarehousingOrderDetailsVOSBean> purchaseWarehousingOrderDetailsVosBeans) {
super(R.layout.item_warehousing_query, purchaseWarehousingOrderDetailsVosBeans);
this.context = context;
}
@Override
protected void convert(@NotNull BaseViewHolder viewHolder, WareHouseListBean.WareHousingDataBean.PurchaseWarehousingOrderDetailsVOSBean item) {
viewHolder.setText(R.id.tv_warehouse_item_ingredients_name, item.getName());
viewHolder.setText(R.id.tv_warehouse_item_ingredients_species, item.getCateName());
viewHolder.setText(R.id.tv_warehouse_item_supplier, item.getSupplierName());
viewHolder.setText(R.id.tv_warehouse_item_unit, item.getBasicUnitName());
viewHolder.setText(R.id.tv_warehouse_item_unit_price, item.getFoodPrice() + "");
viewHolder.setText(R.id.tv_warehouse_item_inventory_quantity, item.getFoodNum() + "");
viewHolder.setText(R.id.tv_warehouse_item_total_amount, item.getFoodAmount() + "");
// if (viewHolder.getAdapterPosition() == 0) {
// int textColorRes = getColor(R.color.white);
// setTextColor(viewHolder, textColorRes);
// int bgColorRes = getColor(R.color.theme_color);
// setBgColor(viewHolder, bgColorRes);
// } else {
int textColorRes = getColor(R.color.color_3c);
setTextColor(viewHolder, textColorRes);
int colorRes = getColor(colors[viewHolder.getAdapterPosition() % 2]);
setBgColor(viewHolder, colorRes);
// }
}
private void setBgColor(@NotNull BaseViewHolder viewHolder, int bgColorRes) {
viewHolder.setBackgroundColor(R.id.tv_warehouse_item_ingredients_name, bgColorRes);
viewHolder.setBackgroundColor(R.id.tv_warehouse_item_ingredients_species, bgColorRes);
viewHolder.setBackgroundColor(R.id.tv_warehouse_item_supplier, bgColorRes);
viewHolder.setBackgroundColor(R.id.tv_warehouse_item_unit, bgColorRes);
viewHolder.setBackgroundColor(R.id.tv_warehouse_item_unit_price, bgColorRes);
viewHolder.setBackgroundColor(R.id.tv_warehouse_item_inventory_quantity, bgColorRes);
viewHolder.setBackgroundColor(R.id.tv_warehouse_item_total_amount, bgColorRes);
}
private void setTextColor(@NotNull BaseViewHolder viewHolder, int textColorRes) {
viewHolder.setTextColor(R.id.tv_warehouse_item_ingredients_name, textColorRes);
viewHolder.setTextColor(R.id.tv_warehouse_item_ingredients_species, textColorRes);
viewHolder.setTextColor(R.id.tv_warehouse_item_supplier, textColorRes);
viewHolder.setTextColor(R.id.tv_warehouse_item_unit, textColorRes);
viewHolder.setTextColor(R.id.tv_warehouse_item_unit_price, textColorRes);
viewHolder.setTextColor(R.id.tv_warehouse_item_inventory_quantity, textColorRes);
viewHolder.setTextColor(R.id.tv_warehouse_item_total_amount, textColorRes);
}
private int getColor(int colorRes) {
return ContextCompat.getColor(context, colorRes);
}
}
...@@ -14,6 +14,7 @@ import com.gingersoft.supply_chain.mvp.contract.BaseSupplyChainContract; ...@@ -14,6 +14,7 @@ import com.gingersoft.supply_chain.mvp.contract.BaseSupplyChainContract;
import com.jess.arms.base.BaseFragment; import com.jess.arms.base.BaseFragment;
import com.jess.arms.mvp.IPresenter; import com.jess.arms.mvp.IPresenter;
import com.jess.arms.utils.ArmsUtils; import com.jess.arms.utils.ArmsUtils;
import com.jess.arms.utils.DeviceUtils;
import com.kingja.loadsir.core.LoadService; import com.kingja.loadsir.core.LoadService;
import com.qmuiteam.qmui.widget.QMUITopBar; import com.qmuiteam.qmui.widget.QMUITopBar;
...@@ -113,7 +114,9 @@ public abstract class BaseSupplyChainFragment<P extends IPresenter> extends Base ...@@ -113,7 +114,9 @@ public abstract class BaseSupplyChainFragment<P extends IPresenter> extends Base
public void killMyself() { public void killMyself() {
FragmentActivity activity = getActivity(); FragmentActivity activity = getActivity();
if (activity != null) { if (activity != null) {
DeviceUtils.hideSoftKeyboard(mContext, activity.getWindow().getDecorView());
activity.onBackPressed(); activity.onBackPressed();
} }
} }
} }
...@@ -25,6 +25,7 @@ import com.gingersoft.supply_chain.mvp.ui.fragment.order.PurchaseListFragment; ...@@ -25,6 +25,7 @@ import com.gingersoft.supply_chain.mvp.ui.fragment.order.PurchaseListFragment;
import com.gingersoft.supply_chain.mvp.ui.fragment.food.MeasurementUnitFragment; import com.gingersoft.supply_chain.mvp.ui.fragment.food.MeasurementUnitFragment;
import com.gingersoft.supply_chain.mvp.ui.fragment.supplier.SupplierListFragment; import com.gingersoft.supply_chain.mvp.ui.fragment.supplier.SupplierListFragment;
import com.gingersoft.supply_chain.mvp.ui.fragment.food.FoodIngredientsFragment; import com.gingersoft.supply_chain.mvp.ui.fragment.food.FoodIngredientsFragment;
import com.gingersoft.supply_chain.mvp.ui.fragment.warehouse.WareHouseListFragment;
import com.jess.arms.di.component.AppComponent; import com.jess.arms.di.component.AppComponent;
import com.qmuiteam.qmui.widget.QMUITopBar; import com.qmuiteam.qmui.widget.QMUITopBar;
import java.util.ArrayList; import java.util.ArrayList;
...@@ -89,39 +90,39 @@ public class FunctionListFragment extends BaseSupplyChainFragment<FunctionListPr ...@@ -89,39 +90,39 @@ public class FunctionListFragment extends BaseSupplyChainFragment<FunctionListPr
orderManger.add(new Function("採購訂單", R.drawable.ic_purchase_order)); orderManger.add(new Function("採購訂單", R.drawable.ic_purchase_order));
purchaseFunctionBeans.add(new PurchaseFunctionBean("訂單管理", orderManger)); purchaseFunctionBeans.add(new PurchaseFunctionBean("訂單管理", orderManger));
// List<Function> storage = new ArrayList<>(); List<Function> storage = new ArrayList<>();
// storage.add(new Function("入庫", R.drawable.ic_purchase_order)); storage.add(new Function("庫存查詢", R.drawable.ic_purchase_order));
// purchaseFunctionBeans.add(new PurchaseFunctionBean("庫存管理", storage)); purchaseFunctionBeans.add(new PurchaseFunctionBean("庫存管理", storage));
PurchaseFunctionAdapter purchaseFunctionAdapter = new PurchaseFunctionAdapter(mContext, purchaseFunctionBeans); PurchaseFunctionAdapter purchaseFunctionAdapter = new PurchaseFunctionAdapter(mContext, purchaseFunctionBeans);
purchaseFunctionAdapter.setFunctionClickListener(new OnItemClickListener() { purchaseFunctionAdapter.setFunctionClickListener((adapter, view, position) -> {
@Override FunctionChildAdapter functionChildAdapter = (FunctionChildAdapter) adapter;
public void onItemClick(@NonNull BaseQuickAdapter<?, ?> adapter, @NonNull View view, int position) { List<Function> data = functionChildAdapter.getData();
FunctionChildAdapter functionChildAdapter = (FunctionChildAdapter) adapter; switch (data.get(position).getResName()) {
List<Function> data = functionChildAdapter.getData(); case "供應商":
switch (data.get(position).getResName()) { start(SupplierListFragment.newInstance(false));
case "供應商": break;
start(SupplierListFragment.newInstance(false)); case "食材":
break; start(FoodIngredientsFragment.newInstance(FOOD_INGREDIENTS));
case "食材": break;
start(FoodIngredientsFragment.newInstance(FOOD_INGREDIENTS)); case "種類":
break; start(CategoryFragment.newInstance());
case "種類": break;
start(CategoryFragment.newInstance()); case "包裝":
break; start(MeasurementUnitFragment.newInstance(false));
case "包裝": break;
start(MeasurementUnitFragment.newInstance(false)); case "採購訂單":
break; start(PurchaseListFragment.newInstance());
case "採購訂單": break;
start(PurchaseListFragment.newInstance()); case "入庫":
break; start(StorageListFragment.newInstance());
case "入庫": break;
start(StorageListFragment.newInstance()); case "庫存查詢":
break; start(WareHouseListFragment.newInstance());
default: break;
default:
break;
} break;
} }
}); });
rvSupplyChainFunctionList.setAdapter(purchaseFunctionAdapter); rvSupplyChainFunctionList.setAdapter(purchaseFunctionAdapter);
......
package com.gingersoft.supply_chain.mvp.ui.fragment.food; package com.gingersoft.supply_chain.mvp.ui.fragment.food;
import android.os.Bundle; import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
...@@ -14,6 +15,7 @@ import androidx.recyclerview.widget.GridLayoutManager; ...@@ -14,6 +15,7 @@ import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.RecyclerView; import androidx.recyclerview.widget.RecyclerView;
import com.gingersoft.gsa.cloud.common.utils.other.TextUtil; import com.gingersoft.gsa.cloud.common.utils.other.TextUtil;
import com.gingersoft.gsa.cloud.ui.utils.AppDialog;
import com.gingersoft.supply_chain.R; import com.gingersoft.supply_chain.R;
import com.gingersoft.supply_chain.R2; import com.gingersoft.supply_chain.R2;
import com.gingersoft.supply_chain.di.component.DaggerFoodUnitPageComponent; import com.gingersoft.supply_chain.di.component.DaggerFoodUnitPageComponent;
...@@ -24,9 +26,13 @@ import com.gingersoft.supply_chain.mvp.presenter.FoodUnitPagePresenter; ...@@ -24,9 +26,13 @@ import com.gingersoft.supply_chain.mvp.presenter.FoodUnitPagePresenter;
import com.gingersoft.supply_chain.mvp.ui.adapter.BasicUnitAdapter; import com.gingersoft.supply_chain.mvp.ui.adapter.BasicUnitAdapter;
import com.gingersoft.supply_chain.mvp.ui.adapter.DeputyUnitAdapter; import com.gingersoft.supply_chain.mvp.ui.adapter.DeputyUnitAdapter;
import com.gingersoft.supply_chain.mvp.ui.fragment.BaseSupplyChainFragment; import com.gingersoft.supply_chain.mvp.ui.fragment.BaseSupplyChainFragment;
import com.gingersoft.supply_chain.mvp.utils.NotDispatchListener;
import com.jess.arms.di.component.AppComponent; import com.jess.arms.di.component.AppComponent;
import com.qmuiteam.qmui.alpha.QMUIAlphaTextView; import com.qmuiteam.qmui.alpha.QMUIAlphaTextView;
import com.qmuiteam.qmui.widget.QMUITopBar; import com.qmuiteam.qmui.widget.QMUITopBar;
import com.qmuiteam.qmui.widget.dialog.QMUIDialog;
import com.qmuiteam.qmui.widget.dialog.QMUIDialogView;
import com.qmuiteam.qmui.widget.popup.QMUIBasePopup;
import java.io.Serializable; import java.io.Serializable;
import java.util.Iterator; import java.util.Iterator;
...@@ -40,7 +46,7 @@ import butterknife.OnClick; ...@@ -40,7 +46,7 @@ import butterknife.OnClick;
* ================================================ * ================================================
* Description: 最新版食品單位填寫頁面 * Description: 最新版食品單位填寫頁面
*/ */
public class FoodUnitPageFragment extends BaseSupplyChainFragment<FoodUnitPagePresenter> implements FoodUnitPageContract.View { public class FoodUnitPageFragment extends BaseSupplyChainFragment<FoodUnitPagePresenter> implements FoodUnitPageContract.View, NotDispatchListener {
@BindView(R2.id.supply_top_bar) @BindView(R2.id.supply_top_bar)
QMUITopBar topBar; QMUITopBar topBar;
...@@ -55,19 +61,35 @@ public class FoodUnitPageFragment extends BaseSupplyChainFragment<FoodUnitPagePr ...@@ -55,19 +61,35 @@ public class FoodUnitPageFragment extends BaseSupplyChainFragment<FoodUnitPagePr
private DeputyUnitAdapter deputyUnitAdapter; private DeputyUnitAdapter deputyUnitAdapter;
private BasicUnitAdapter basicUnitAdapter;
/**
* 主單位名稱
*/
public final static String BASIC_UNIT_KEY = "basicUnitKey"; public final static String BASIC_UNIT_KEY = "basicUnitKey";
/**
* 副單位集合
*/
public final static String DEPUTY_UNIT_KEY = "deputyUnitKey"; public final static String DEPUTY_UNIT_KEY = "deputyUnitKey";
/**
* 是否是修改單位
*/
public final static String UPDATE_UNIT_KEY = "updateUnitKey";
/**
* 食品id
*/
public final static String FOOD_ID_KEY = "foodIdKey";
/** /**
* @param basicUnit 基本單位 * @param basicUnit 基本單位
* @param deputyUnitBeans 副單位集合 * @param deputyUnitBeans 副單位集合
* @return * @return
*/ */
public static FoodUnitPageFragment newInstance(String basicUnit, List<DeputyUnitBean> deputyUnitBeans) { public static FoodUnitPageFragment newInstance(String basicUnit, List<DeputyUnitBean> deputyUnitBeans, boolean isUpdateUnit, int foodId) {
FoodUnitPageFragment fragment = new FoodUnitPageFragment(); FoodUnitPageFragment fragment = new FoodUnitPageFragment();
Bundle bundle = new Bundle(); Bundle bundle = new Bundle();
bundle.putSerializable(DEPUTY_UNIT_KEY, (Serializable) deputyUnitBeans); bundle.putSerializable(DEPUTY_UNIT_KEY, (Serializable) deputyUnitBeans);
bundle.putString(BASIC_UNIT_KEY, basicUnit); bundle.putString(BASIC_UNIT_KEY, basicUnit);
bundle.putBoolean(UPDATE_UNIT_KEY, isUpdateUnit);
bundle.putInt(FOOD_ID_KEY, foodId);
fragment.setArguments(bundle); fragment.setArguments(bundle);
return fragment; return fragment;
} }
...@@ -90,6 +112,7 @@ public class FoodUnitPageFragment extends BaseSupplyChainFragment<FoodUnitPagePr ...@@ -90,6 +112,7 @@ public class FoodUnitPageFragment extends BaseSupplyChainFragment<FoodUnitPagePr
@Override @Override
public void initData(@Nullable Bundle savedInstanceState) { public void initData(@Nullable Bundle savedInstanceState) {
mPresenter.initData(getArguments()); mPresenter.initData(getArguments());
edBasicUnit.requestFocus();
} }
@OnClick({R2.id.tv_add_deputy, R2.id.tv_food_unit_complete}) @OnClick({R2.id.tv_add_deputy, R2.id.tv_food_unit_complete})
...@@ -107,41 +130,57 @@ public class FoodUnitPageFragment extends BaseSupplyChainFragment<FoodUnitPagePr ...@@ -107,41 +130,57 @@ public class FoodUnitPageFragment extends BaseSupplyChainFragment<FoodUnitPagePr
edBasicUnit.setError("請輸入基本單位"); edBasicUnit.setError("請輸入基本單位");
return; return;
} }
//拿到副單位集合
Bundle result = new Bundle();
result.putString(BASIC_UNIT_KEY, basicUnit);
if (deputyUnitAdapter != null) { if (deputyUnitAdapter != null) {
List<DeputyUnitBean> data = deputyUnitAdapter.getData(); mPresenter.addDeputyUnit(deputyUnitAdapter.getData());
Iterator<DeputyUnitBean> iterator = data.iterator();
while (iterator.hasNext()){
if(TextUtil.isEmptyOrNullOrUndefined(iterator.next().getDeputyUnit())){
//單位為空,移除掉
iterator.remove();
}
}
result.putSerializable(DEPUTY_UNIT_KEY, (Serializable) data);
} }
setFragmentResult(RESULT_OK, result); // Bundle result = new Bundle();
killMyself(); // result.putString(BASIC_UNIT_KEY, basicUnit);
// if (deputyUnitAdapter != null) {
// //拿到副單位集合
// List<DeputyUnitBean> data = deputyUnitAdapter.getData();
// Iterator<DeputyUnitBean> iterator = data.iterator();
// while (iterator.hasNext()) {
// if (TextUtil.isEmptyOrNullOrUndefined(iterator.next().getDeputyUnit())) {
// //單位為空,移除掉
// iterator.remove();
// }
// }
// result.putSerializable(DEPUTY_UNIT_KEY, (Serializable) data);
// }
// setFragmentResult(RESULT_OK, result);
// killMyself();
} }
} }
@Override @Override
public void loadBasicUnitAdapter(List<BasicUnitBean> basicUnitBeans) { public void loadBasicUnitAdapter(List<BasicUnitBean> basicUnitBeans) {
BasicUnitAdapter basicUnitAdapter = new BasicUnitAdapter(basicUnitBeans); basicUnitAdapter = new BasicUnitAdapter(basicUnitBeans);
rvBasicUnitList.setLayoutManager(new GridLayoutManager(mContext, 5)); rvBasicUnitList.setLayoutManager(new GridLayoutManager(mContext, 5));
rvBasicUnitList.setAdapter(basicUnitAdapter); rvBasicUnitList.setAdapter(basicUnitAdapter);
basicUnitAdapter.setOnItemClickListener((adapter, view, position) -> { basicUnitAdapter.setOnItemClickListener((adapter, view, position) -> {
//先獲取當前焦點在哪個輸入框上,然後再填充內容 if (position == basicUnitAdapter.getItemCount() - 1) {
FragmentActivity activity = getActivity(); //新增
if (activity != null) { AppDialog.getInstance().showEditDialog(mContext, "新增單位", "單位名稱:", "", "", new AppDialog.OnInputConfirmListener() {
Window window = activity.getWindow(); @Override
if (window != null) { public void onConfirm(String text) {
View decorView = window.getDecorView(); if (TextUtil.isNotEmptyOrNullOrUndefined(text)) {
View focusView = decorView.findFocus(); mPresenter.addBasicUnit(text);
if (focusView instanceof EditText) { }
EditText editText = (EditText) focusView; }
editText.setText(editText.getText() + basicUnitAdapter.getData().get(position).getContent()); });
} else {
//先獲取當前焦點在哪個輸入框上,然後再填充內容
FragmentActivity activity = getActivity();
if (activity != null) {
Window window = activity.getWindow();
if (window != null) {
View decorView = window.getDecorView();
View focusView = decorView.findFocus();
if (focusView instanceof EditText) {
EditText editText = (EditText) focusView;
editText.setText(basicUnitAdapter.getData().get(position).getContent());
editText.setSelection(editText.getText().length());
}
} }
} }
} }
...@@ -149,6 +188,14 @@ public class FoodUnitPageFragment extends BaseSupplyChainFragment<FoodUnitPagePr ...@@ -149,6 +188,14 @@ public class FoodUnitPageFragment extends BaseSupplyChainFragment<FoodUnitPagePr
} }
@Override @Override
public void addBasicUnit(BasicUnitBean basicUnitBean) {
if (basicUnitAdapter != null) {
int index = basicUnitAdapter.getItemCount() - 1;
basicUnitAdapter.addData(Math.max(index, 0), basicUnitBean);
}
}
@Override
public void loadDeputyUnitAdapter(List<DeputyUnitBean> deputyUnitBeans) { public void loadDeputyUnitAdapter(List<DeputyUnitBean> deputyUnitBeans) {
if (deputyUnitAdapter == null) { if (deputyUnitAdapter == null) {
deputyUnitAdapter = new DeputyUnitAdapter(deputyUnitBeans); deputyUnitAdapter = new DeputyUnitAdapter(deputyUnitBeans);
...@@ -156,7 +203,7 @@ public class FoodUnitPageFragment extends BaseSupplyChainFragment<FoodUnitPagePr ...@@ -156,7 +203,7 @@ public class FoodUnitPageFragment extends BaseSupplyChainFragment<FoodUnitPagePr
deputyUnitAdapter.setOnItemChildClickListener((adapter, view, position) -> { deputyUnitAdapter.setOnItemChildClickListener((adapter, view, position) -> {
if (view.getId() == R.id.iv_deputy_unit_delete) { if (view.getId() == R.id.iv_deputy_unit_delete) {
//刪除副單位 //刪除副單位
deputyUnitAdapter.removeAt(position); mPresenter.deleteDeputyUnit(deputyUnitAdapter.getItem(position), position);
} }
}); });
} else { } else {
...@@ -168,4 +215,25 @@ public class FoodUnitPageFragment extends BaseSupplyChainFragment<FoodUnitPagePr ...@@ -168,4 +215,25 @@ public class FoodUnitPageFragment extends BaseSupplyChainFragment<FoodUnitPagePr
public void initTopBar(String title) { public void initTopBar(String title) {
initTopBar(topBar, title); initTopBar(topBar, title);
} }
@Override
public void setMainUnit(String content) {
edBasicUnit.setText(content);
}
@Override
public void callBackDeputyUnit(List<DeputyUnitBean> deputyUnitBeans) {
String basicUnit = edBasicUnit.getText() + "";
Bundle result = new Bundle();
result.putString(BASIC_UNIT_KEY, basicUnit);
result.putSerializable(DEPUTY_UNIT_KEY, (Serializable) deputyUnitBeans);
setFragmentResult(RESULT_OK, result);
killMyself();
}
@Override
public void deleteDeputyUnit(int position) {
deputyUnitAdapter.removeAt(position);
}
} }
...@@ -9,10 +9,8 @@ import androidx.annotation.NonNull; ...@@ -9,10 +9,8 @@ import androidx.annotation.NonNull;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import androidx.recyclerview.widget.RecyclerView; import androidx.recyclerview.widget.RecyclerView;
import com.gingersoft.gsa.cloud.common.utils.other.TextUtil;
import com.gingersoft.gsa.cloud.common.utils.toast.ToastUtils; import com.gingersoft.gsa.cloud.common.utils.toast.ToastUtils;
import com.gingersoft.gsa.cloud.ui.adapter.bean.InfoMultiBean; import com.gingersoft.gsa.cloud.ui.adapter.bean.InfoMultiBean;
import com.gingersoft.gsa.cloud.ui.adapter.bean.MultiInputSelectBean;
import com.gingersoft.gsa.cloud.ui.adapter.multi.InfoMultiAdapter; import com.gingersoft.gsa.cloud.ui.adapter.multi.InfoMultiAdapter;
import com.gingersoft.gsa.cloud.ui.recylcler.decorator.DividerItemDecoration; import com.gingersoft.gsa.cloud.ui.recylcler.decorator.DividerItemDecoration;
import com.gingersoft.supply_chain.R; import com.gingersoft.supply_chain.R;
...@@ -31,7 +29,6 @@ import java.util.List; ...@@ -31,7 +29,6 @@ import java.util.List;
import butterknife.BindView; import butterknife.BindView;
import butterknife.OnClick; import butterknife.OnClick;
import me.yokeyword.fragmentation.ISupportFragment;
import static com.gingersoft.gsa.cloud.ui.recylcler.decorator.DividerItemDecoration.VERTICAL_LIST; import static com.gingersoft.gsa.cloud.ui.recylcler.decorator.DividerItemDecoration.VERTICAL_LIST;
import static com.gingersoft.supply_chain.mvp.ui.fragment.food.MeasurementUnitFragment.SELECT_FOOD_UNIT_REQUEST_CODE; import static com.gingersoft.supply_chain.mvp.ui.fragment.food.MeasurementUnitFragment.SELECT_FOOD_UNIT_REQUEST_CODE;
...@@ -95,14 +92,15 @@ public class PackageSpecificationFragment extends BaseSupplyChainFragment<Packag ...@@ -95,14 +92,15 @@ public class PackageSpecificationFragment extends BaseSupplyChainFragment<Packag
public void initData(@Nullable Bundle savedInstanceState) { public void initData(@Nullable Bundle savedInstanceState) {
initTopBar(); initTopBar();
infoMultiAdapter = new InfoMultiAdapter(mContext, mPresenter.getInfoMultiList()); infoMultiAdapter = new InfoMultiAdapter(mContext, mPresenter.getInfoMultiList());
infoMultiAdapter.setOnItemClickListener((adapter, view, position) -> { // infoMultiAdapter.setOnItemClickListener((adapter, view, position) -> {
if (adapter.getItemViewType(position) == InfoMultiBean.ITEM_MULTIPLE_INPUT_SELECT) { // if (adapter.getItemViewType(position) == InfoMultiBean.ITEM_MULTIPLE_INPUT_SELECT) {
List<InfoMultiBean> data = infoMultiAdapter.getData(); // List<InfoMultiBean> data = infoMultiAdapter.getData();
MultiInputSelectBean multiInputSelectBean = (MultiInputSelectBean) data.get(position); // MultiInputSelectBean multiInputSelectBean = (MultiInputSelectBean) data.get(position);
ISupportFragment fragment = multiInputSelectBean.getFragment(); // if(multiInputSelectBean.getFragment() == MeasurementUnitFragment.class){
startForResult(fragment, multiInputSelectBean.getRequestCode()); // startForResult(MeasurementUnitFragment.newInstance(true), multiInputSelectBean.getRequestCode());
} // }
}); // }
// });
rvNewPackageSpecification.addItemDecoration(new DividerItemDecoration(mContext, VERTICAL_LIST)); rvNewPackageSpecification.addItemDecoration(new DividerItemDecoration(mContext, VERTICAL_LIST));
rvNewPackageSpecification.setAdapter(infoMultiAdapter); rvNewPackageSpecification.setAdapter(infoMultiAdapter);
} }
...@@ -125,19 +123,19 @@ public class PackageSpecificationFragment extends BaseSupplyChainFragment<Packag ...@@ -125,19 +123,19 @@ public class PackageSpecificationFragment extends BaseSupplyChainFragment<Packag
return; return;
} }
List<InfoMultiBean> data = infoMultiAdapter.getData(); List<InfoMultiBean> data = infoMultiAdapter.getData();
if (TextUtil.isEmptyOrNullOrUndefined(mPresenter.getOrderingMinNum(data))) { // if (TextUtil.isEmptyOrNullOrUndefined(mPresenter.getOrderingMinNum(data))) {
ToastUtils.show(mContext, "請輸入訂貨單位最小數量"); // ToastUtils.show(mContext, "請輸入訂貨單位最小數量");
return; // return;
} else if (TextUtil.isEmptyOrNullOrUndefined(mPresenter.getOrderingMaxNum(data))) { // } else if (TextUtil.isEmptyOrNullOrUndefined(mPresenter.getOrderingMaxNum(data))) {
ToastUtils.show(mContext, "請輸入訂貨單位最大數量"); // ToastUtils.show(mContext, "請輸入訂貨單位最大數量");
return; // return;
} else if (TextUtil.isEmptyOrNullOrUndefined(mPresenter.getReceivingMinNum(data))) { // } else if (TextUtil.isEmptyOrNullOrUndefined(mPresenter.getReceivingMinNum(data))) {
ToastUtils.show(mContext, "請輸入收貨單位最小數量"); // ToastUtils.show(mContext, "請輸入收貨單位最小數量");
return; // return;
} else if (TextUtil.isEmptyOrNullOrUndefined(mPresenter.getReceivingMinNum(data))) { // } else if (TextUtil.isEmptyOrNullOrUndefined(mPresenter.getReceivingMinNum(data))) {
ToastUtils.show(mContext, "請輸入收貨單位最大數量"); // ToastUtils.show(mContext, "請輸入收貨單位最大數量");
return; // return;
} // }
List<FoodPackingSpecificationBean> foodPackingSpecifications = mPresenter.getFoodPackingSpecifications(data); List<FoodPackingSpecificationBean> foodPackingSpecifications = mPresenter.getFoodPackingSpecifications(data);
Bundle bundle = new Bundle(); Bundle bundle = new Bundle();
bundle.putSerializable(FOOD_PACKING_SPECIFICATION_DATA_KEY, (Serializable) foodPackingSpecifications); bundle.putSerializable(FOOD_PACKING_SPECIFICATION_DATA_KEY, (Serializable) foodPackingSpecifications);
......
package com.gingersoft.supply_chain.mvp.ui.fragment.order; package com.gingersoft.supply_chain.mvp.ui.fragment.order;
import android.os.Bundle; import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
...@@ -73,12 +74,15 @@ public class OrderDetailsFragment extends BaseSupplyChainFragment<OrderDetailsPr ...@@ -73,12 +74,15 @@ public class OrderDetailsFragment extends BaseSupplyChainFragment<OrderDetailsPr
private int typesOfFood = 0; private int typesOfFood = 0;
private double totalAmount = 0; private double totalAmount = 0;
// private int orderState = PurchaseOrderDetailsBean.WAIT_RECEIVED;
private final static String ORDER_DETAILS_ORDER_ID = "orderId"; private final static String ORDER_DETAILS_ORDER_ID = "orderId";
private final static String ORDER_STATE = "orderState";
public static OrderDetailsFragment newInstance(int orderId) { public static OrderDetailsFragment newInstance(int orderId, int orderState) {
OrderDetailsFragment fragment = new OrderDetailsFragment(); OrderDetailsFragment fragment = new OrderDetailsFragment();
Bundle bundle = new Bundle(); Bundle bundle = new Bundle();
bundle.putInt(ORDER_DETAILS_ORDER_ID, orderId); bundle.putInt(ORDER_DETAILS_ORDER_ID, orderId);
bundle.putInt(ORDER_STATE, orderState);
fragment.setArguments(bundle); fragment.setArguments(bundle);
return fragment; return fragment;
} }
...@@ -103,13 +107,18 @@ public class OrderDetailsFragment extends BaseSupplyChainFragment<OrderDetailsPr ...@@ -103,13 +107,18 @@ public class OrderDetailsFragment extends BaseSupplyChainFragment<OrderDetailsPr
initTopBar(supplyTopBar, "入庫單"); initTopBar(supplyTopBar, "入庫單");
supplyTopBar.addRightImageButton(R.drawable.ic_white_delete, R.id.qmui_delete_order).setOnClickListener(v -> { supplyTopBar.addRightImageButton(R.drawable.ic_white_delete, R.id.qmui_delete_order).setOnClickListener(v -> {
//刪除訂單 //刪除訂單
}); });
Bundle arguments = getArguments(); Bundle arguments = getArguments();
if (arguments != null) { if (arguments != null) {
int orderId = arguments.getInt(ORDER_DETAILS_ORDER_ID, 0); int orderId = arguments.getInt(ORDER_DETAILS_ORDER_ID, 0);
// orderState = arguments.getInt(ORDER_STATE, 0);
// if (orderState == PurchaseOrderDetailsBean.COMPLETE_RECEIVED) {
// } else {
mPresenter.getOrderDetailsById(orderId); mPresenter.getOrderDetailsById(orderId);
// }
} else { } else {
showMessage("未獲取到訂單ID,請重試"); showMessage("未獲取到訂單編號,請重試");
killMyself(); killMyself();
} }
} }
...@@ -127,9 +136,11 @@ public class OrderDetailsFragment extends BaseSupplyChainFragment<OrderDetailsPr ...@@ -127,9 +136,11 @@ public class OrderDetailsFragment extends BaseSupplyChainFragment<OrderDetailsPr
} else if (viewId == R.id.tv_order_details_partial_receipt) { } else if (viewId == R.id.tv_order_details_partial_receipt) {
//部分收貨 //部分收貨
mPresenter.addWarehouse(PurchaseOrderDetailsBean.PART_RECEIVED, "", edOrderDetailsRemark.getText() + "", totalAmount, orderDetailsFoodAdapter.getData()); mPresenter.addWarehouse(PurchaseOrderDetailsBean.PART_RECEIVED, "", edOrderDetailsRemark.getText() + "", totalAmount, orderDetailsFoodAdapter.getData());
setFragmentResult(RESULT_OK, null);
} else if (viewId == R.id.tv_order_details_receipt) { } else if (viewId == R.id.tv_order_details_receipt) {
//收貨 //收貨
mPresenter.addWarehouse(PurchaseOrderDetailsBean.COMPLETE_RECEIVED, "", edOrderDetailsRemark.getText() + "", totalAmount, orderDetailsFoodAdapter.getData()); mPresenter.addWarehouse(PurchaseOrderDetailsBean.COMPLETE_RECEIVED, "", edOrderDetailsRemark.getText() + "", totalAmount, orderDetailsFoodAdapter.getData());
setFragmentResult(RESULT_OK, null);
} }
} }
...@@ -165,7 +176,7 @@ public class OrderDetailsFragment extends BaseSupplyChainFragment<OrderDetailsPr ...@@ -165,7 +176,7 @@ public class OrderDetailsFragment extends BaseSupplyChainFragment<OrderDetailsPr
for (PurchaseOrderDetailsBean.PurchaseOrderDetailsInfoVosBean datum : orderDetailsFoodAdapter.getData()) { for (PurchaseOrderDetailsBean.PurchaseOrderDetailsInfoVosBean datum : orderDetailsFoodAdapter.getData()) {
datum.setChecked(isChecked); datum.setChecked(isChecked);
if (isChecked) { if (isChecked) {
totalAmount = MoneyUtil.sum(totalAmount, MoneyUtil.priceCalculation(datum.getFoodPrice(), datum.getFoodQuantity())); totalAmount = MoneyUtil.sum(totalAmount, datum.getWarehousingAmount());
} }
} }
orderDetailsFoodAdapter.notifyDataSetChanged(); orderDetailsFoodAdapter.notifyDataSetChanged();
...@@ -185,18 +196,24 @@ public class OrderDetailsFragment extends BaseSupplyChainFragment<OrderDetailsPr ...@@ -185,18 +196,24 @@ public class OrderDetailsFragment extends BaseSupplyChainFragment<OrderDetailsPr
private void initRecyclerView(PurchaseOrderDetailsBean orderDetailsBean) { private void initRecyclerView(PurchaseOrderDetailsBean orderDetailsBean) {
orderDetailsFoodAdapter = new OrderDetailsFoodAdapter(mContext, orderDetailsBean.getPurchaseOrderDetailsInfoVOS()); orderDetailsFoodAdapter = new OrderDetailsFoodAdapter(mContext, orderDetailsBean.getPurchaseOrderDetailsInfoVOS());
rvOrderDetailsFoodList.setAdapter(orderDetailsFoodAdapter); rvOrderDetailsFoodList.setAdapter(orderDetailsFoodAdapter);
orderDetailsFoodAdapter.setOnValueChangeListener((position, value) -> {
totalAmount = MoneyUtil.sum(totalAmount, value);
setTotalAmount();
});
orderDetailsFoodAdapter.setOnItemClickListener((adapter, view, position) -> { orderDetailsFoodAdapter.setOnItemClickListener((adapter, view, position) -> {
PurchaseOrderDetailsBean.PurchaseOrderDetailsInfoVosBean infoVosBean = orderDetailsFoodAdapter.getData().get(position); PurchaseOrderDetailsBean.PurchaseOrderDetailsInfoVosBean infoVosBean = orderDetailsFoodAdapter.getData().get(position);
infoVosBean.setChecked(!infoVosBean.isChecked()); infoVosBean.setChecked(!infoVosBean.isChecked());
adapter.notifyItemChanged(position); adapter.notifyItemChanged(position);
//修改選中狀態後,重新計算總價 //修改選中狀態後,重新計算入庫總價
if (infoVosBean.isChecked()) { if (infoVosBean.isChecked()) {
totalAmount = MoneyUtil.sum(totalAmount, MoneyUtil.priceCalculation(infoVosBean.getFoodPrice(), infoVosBean.getFoodQuantity())); totalAmount = MoneyUtil.sum(totalAmount, infoVosBean.getWarehousingAmount());
typesOfFood += 1; typesOfFood += 1;
} else { } else {
totalAmount = MoneyUtil.sub(totalAmount, MoneyUtil.priceCalculation(infoVosBean.getFoodPrice(), infoVosBean.getFoodQuantity())); totalAmount = MoneyUtil.sub(totalAmount, infoVosBean.getWarehousingAmount());
typesOfFood -= 1; typesOfFood -= 1;
} }
//全選
cbOrderDetailsAllSelected.setChecked(typesOfFood == orderDetailsFoodAdapter.getData().size());
setTotalAmount(); setTotalAmount();
setTypesOfFood(); setTypesOfFood();
}); });
......
...@@ -94,6 +94,7 @@ public class PurchaseListFragment extends BaseSupplyChainFragment<PurchaseListPr ...@@ -94,6 +94,7 @@ public class PurchaseListFragment extends BaseSupplyChainFragment<PurchaseListPr
* 當前訂單列表類型的下標 * 當前訂單列表類型的下標
*/ */
private int orderStateIndex = 0; private int orderStateIndex = 0;
private final static int REQUEST_ORDER_DETAILS_CODE = 1001;
@Override @Override
public void setupFragmentComponent(@NonNull AppComponent appComponent) { public void setupFragmentComponent(@NonNull AppComponent appComponent) {
...@@ -112,6 +113,7 @@ public class PurchaseListFragment extends BaseSupplyChainFragment<PurchaseListPr ...@@ -112,6 +113,7 @@ public class PurchaseListFragment extends BaseSupplyChainFragment<PurchaseListPr
@Override @Override
public void initData(@Nullable Bundle savedInstanceState) { public void initData(@Nullable Bundle savedInstanceState) {
refreshPurchaseList.setPrimaryColorsId(R.color.trans, R.color.black);
btnNewOrder.setText("+新增訂單"); btnNewOrder.setText("+新增訂單");
edSearch.setFilters(new InputFilter[]{InputFilterUtils.getChAndEnAndNumInputFilter(mContext), InputFilterUtils.getLengthFilter(mContext, 20)}); edSearch.setFilters(new InputFilter[]{InputFilterUtils.getChAndEnAndNumInputFilter(mContext), InputFilterUtils.getLengthFilter(mContext, 20)});
btnNewOrder.setOnClickListener(v -> { btnNewOrder.setOnClickListener(v -> {
...@@ -164,17 +166,10 @@ public class PurchaseListFragment extends BaseSupplyChainFragment<PurchaseListPr ...@@ -164,17 +166,10 @@ public class PurchaseListFragment extends BaseSupplyChainFragment<PurchaseListPr
.setSelectColor(ContextCompat.getColor(mContext, R.color.theme_color)); .setSelectColor(ContextCompat.getColor(mContext, R.color.theme_color));
purchaseOrderAdapter = new PurchaseOrderAdapter(null); purchaseOrderAdapter = new PurchaseOrderAdapter(null);
purchaseOrderAdapter.setOnItemClickListener((adapter, view, position) -> start(OrderDetailsFragment.newInstance(purchaseOrderAdapter.getData().get(position).getId()))); purchaseOrderAdapter.setOnItemClickListener((adapter, view, position) -> startForResult(OrderDetailsFragment.newInstance(purchaseOrderAdapter.getData().get(position).getId(), orderState[orderStateIndex]), REQUEST_ORDER_DETAILS_CODE));
purchaseOrderAdapter.setOnItemChildClickListener((adapter, view, position) -> { purchaseOrderAdapter.setOnItemChildClickListener((adapter, view, position) -> {
int viewId = view.getId(); int viewId = view.getId();
if (viewId == R.id.iv_supplier_delete) { if (viewId == R.id.btn_purchase_send) {
//刪除採購單
AppDialog.getInstance().showWaringDialog(mContext, "是否刪除採購單?", (view1, dialog) -> {
List<OrderBean> data = purchaseOrderAdapter.getData();
mPresenter.deleteOrder(position, data.get(position));
dialog.dismiss();
});
} else if (viewId == R.id.btn_purchase_send) {
//發送採購單 //發送採購單
List<OrderBean> data = purchaseOrderAdapter.getData(); List<OrderBean> data = purchaseOrderAdapter.getData();
OrderBean orderBean = data.get(position); OrderBean orderBean = data.get(position);
...@@ -185,8 +180,16 @@ public class PurchaseListFragment extends BaseSupplyChainFragment<PurchaseListPr ...@@ -185,8 +180,16 @@ public class PurchaseListFragment extends BaseSupplyChainFragment<PurchaseListPr
purchaseOrder.setSupplierName(orderBean.getSupplierName()); purchaseOrder.setSupplierName(orderBean.getSupplierName());
start(SendMsgFragment.newInstance(Collections.singletonList(purchaseOrder))); start(SendMsgFragment.newInstance(Collections.singletonList(purchaseOrder)));
} }
// if (viewId == R.id.iv_supplier_delete) {
// //刪除採購單
// AppDialog.getInstance().showWaringDialog(mContext, "是否刪除採購單?", (view1, dialog) -> {
// List<OrderBean> data = purchaseOrderAdapter.getData();
// mPresenter.deleteOrder(position, data.get(position));
// dialog.dismiss();
// });
// }
}); });
PurchasePageAdapter adapter = new PurchasePageAdapter(purchaseOrderAdapter, 4); PurchasePageAdapter adapter = new PurchasePageAdapter(purchaseOrderAdapter, 2);
contentViewPager.setAdapter(adapter); contentViewPager.setAdapter(adapter);
mTabSegment.setupWithViewPager(contentViewPager); mTabSegment.setupWithViewPager(contentViewPager);
mTabSegment.setIndicator(new QMUITabIndicator( mTabSegment.setIndicator(new QMUITabIndicator(
...@@ -235,20 +238,32 @@ public class PurchaseListFragment extends BaseSupplyChainFragment<PurchaseListPr ...@@ -235,20 +238,32 @@ public class PurchaseListFragment extends BaseSupplyChainFragment<PurchaseListPr
@Override @Override
public void loadOrderList(List<OrderBean> list) { public void loadOrderList(List<OrderBean> list) {
closeLoading();
if (list == null) {
loadService.showCallback(EmptyCallback.class);
} else if (list.size() == 0) {
loadService.showCallback(EmptyCallback.class);
} else {
loadService.showCallback(SuccessCallback.class);
}
purchaseOrderAdapter.setList(list);
}
private void closeLoading() {
refreshPurchaseList.finishRefresh(); refreshPurchaseList.finishRefresh();
refreshPurchaseList.finishLoadMore(); refreshPurchaseList.finishLoadMore();
loadService.showCallback(SuccessCallback.class);
purchaseOrderAdapter.setList(list);
} }
@Override @Override
public void loadFail() { public void loadFail() {
closeLoading();
purchaseOrderAdapter.setList(null); purchaseOrderAdapter.setList(null);
loadService.showCallback(EmptyCallback.class); loadService.showCallback(EmptyCallback.class);
} }
@Override @Override
public void loadError() { public void loadError() {
closeLoading();
purchaseOrderAdapter.setList(null); purchaseOrderAdapter.setList(null);
loadService.showCallback(ErrorCallback.class); loadService.showCallback(ErrorCallback.class);
} }
...@@ -257,4 +272,13 @@ public class PurchaseListFragment extends BaseSupplyChainFragment<PurchaseListPr ...@@ -257,4 +272,13 @@ public class PurchaseListFragment extends BaseSupplyChainFragment<PurchaseListPr
public void deleteOrder(int position) { public void deleteOrder(int position) {
purchaseOrderAdapter.removeAt(position); purchaseOrderAdapter.removeAt(position);
} }
@Override
public void onFragmentResult(int requestCode, int resultCode, Bundle data) {
super.onFragmentResult(requestCode, resultCode, data);
if(requestCode == REQUEST_ORDER_DETAILS_CODE && resultCode == RESULT_OK){
//用戶進行了收貨操作,需要對列表進行刷新
getOrderList();
}
}
} }
...@@ -99,46 +99,11 @@ public class SendMsgFragment extends BaseSupplyChainFragment<SendMsgPresenter> i ...@@ -99,46 +99,11 @@ public class SendMsgFragment extends BaseSupplyChainFragment<SendMsgPresenter> i
if (viewId == R.id.btn_supplier_confirm) { if (viewId == R.id.btn_supplier_confirm) {
//發送 //發送
mPresenter.sendMsg(); mPresenter.sendMsg();
// if (rgSendMsgMethod.getCheckedRadioButtonId() == R.id.rb_whatsapp) {
// //分享到WhatsApp
// DeviceUtils.shareWhatsApp(mContext, url);
// } else if (rgSendMsgMethod.getCheckedRadioButtonId() == R.id.rb_wechat) {
// //分享到微信
// DeviceUtils.shareWeChatFriend(mContext, url);
// } else if (rgSendMsgMethod.getCheckedRadioButtonId() == R.id.rb_line) {
// //分享到Line
// DeviceUtils.shareLine(mContext, "", url);
// } else if (rgSendMsgMethod.getCheckedRadioButtonId() == R.id.rb_kakao) {
// //跳轉Kakao
//
// }
// if (cbEmail.isChecked()) {
// //發送email
// sendMsg(Email);
// }
// if (cbSms.isChecked()) {
// //發送SMS
// sendMsg(SMS);
// }
// if (cbEfax.isChecked()) {
// //發送Efax
// sendMsg(Efax);
// }
} else if (viewId == R.id.btn_supplier_cancel) { } else if (viewId == R.id.btn_supplier_cancel) {
popTo(PurchaseListFragment.class, true); popTo(PurchaseListFragment.class, true);
} }
} }
// private void sendMsg(int email) {
// mPresenter.sendMsg(purchaseOrders.get(sendSupplierMsgAdapter.getSelectIndex()).getId(), email);
// }
private String url;
// @Override
// public void loadQrCode(String url) {
//
// }
@Override @Override
public void shareThirdApp(String url, int type) { public void shareThirdApp(String url, int type) {
...@@ -175,6 +140,7 @@ public class SendMsgFragment extends BaseSupplyChainFragment<SendMsgPresenter> i ...@@ -175,6 +140,7 @@ public class SendMsgFragment extends BaseSupplyChainFragment<SendMsgPresenter> i
@Override @Override
public void sendSuccess() { public void sendSuccess() {
mPresenter.setSendSuccess();
mPresenter.getContactsBySupplier(mPresenter.getCurrentSelectedSupplier() + 1); mPresenter.getContactsBySupplier(mPresenter.getCurrentSelectedSupplier() + 1);
} }
} }
package com.gingersoft.supply_chain.mvp.ui.fragment.order; package com.gingersoft.supply_chain.mvp.ui.fragment.order;
import android.app.Dialog;
import android.os.Bundle; import android.os.Bundle;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
...@@ -14,12 +13,11 @@ import androidx.annotation.Nullable; ...@@ -14,12 +13,11 @@ import androidx.annotation.Nullable;
import androidx.recyclerview.widget.RecyclerView; import androidx.recyclerview.widget.RecyclerView;
import com.gingersoft.gsa.cloud.common.utils.MoneyUtil; import com.gingersoft.gsa.cloud.common.utils.MoneyUtil;
import com.gingersoft.gsa.cloud.ui.utils.AppDialog;
import com.gingersoft.supply_chain.R; import com.gingersoft.supply_chain.R;
import com.gingersoft.supply_chain.R2; import com.gingersoft.supply_chain.R2;
import com.gingersoft.supply_chain.di.component.DaggerShoppingCatComponent; import com.gingersoft.supply_chain.di.component.DaggerShoppingCatComponent;
import com.gingersoft.supply_chain.mvp.bean.ConfirmOrderBean; import com.gingersoft.supply_chain.mvp.bean.ConfirmOrderBean;
import com.gingersoft.supply_chain.mvp.bean.PurchaseFoodBean; import com.gingersoft.supply_chain.mvp.bean.ShoppingCartBean;
import com.gingersoft.supply_chain.mvp.content.SupplyShoppingCart; import com.gingersoft.supply_chain.mvp.content.SupplyShoppingCart;
import com.gingersoft.supply_chain.mvp.contract.ShoppingCatContract; import com.gingersoft.supply_chain.mvp.contract.ShoppingCatContract;
import com.gingersoft.supply_chain.mvp.presenter.ShoppingCatPresenter; import com.gingersoft.supply_chain.mvp.presenter.ShoppingCatPresenter;
...@@ -58,6 +56,14 @@ public class ShoppingCatFragment extends BaseSupplyChainFragment<ShoppingCatPres ...@@ -58,6 +56,14 @@ public class ShoppingCatFragment extends BaseSupplyChainFragment<ShoppingCatPres
EditText edOrderContentRemark; EditText edOrderContentRemark;
private ShoppingCartAdapter shoppingCartAdapter; private ShoppingCartAdapter shoppingCartAdapter;
/**
* 食材種類
*/
private int totalSpecies = 0;
/**
* 總金額
*/
private double totalAmount = 0;
public static ShoppingCatFragment newInstance() { public static ShoppingCatFragment newInstance() {
ShoppingCatFragment fragment = new ShoppingCatFragment(); ShoppingCatFragment fragment = new ShoppingCatFragment();
...@@ -87,77 +93,78 @@ public class ShoppingCatFragment extends BaseSupplyChainFragment<ShoppingCatPres ...@@ -87,77 +93,78 @@ public class ShoppingCatFragment extends BaseSupplyChainFragment<ShoppingCatPres
//全選 //全選
if (buttonView.isPressed()) { if (buttonView.isPressed()) {
if (shoppingCartAdapter != null) { if (shoppingCartAdapter != null) {
double totalAmount = 0; mPresenter.calculateTotalPrice(isChecked, shoppingCartAdapter.getData());
int totalTypeFood = 0;
for (List<PurchaseFoodBean> datum : shoppingCartAdapter.getData()) {
for (PurchaseFoodBean purchaseFoodBean : datum) {
purchaseFoodBean.setChecked(isChecked);
if (isChecked) {
totalTypeFood++;
totalAmount = MoneyUtil.sum(totalAmount, MoneyUtil.priceCalculation(purchaseFoodBean.getUnitPrice(), purchaseFoodBean.getFoodQuantity()));
}
}
}
shoppingCartAdapter.addChecked(shoppingCartAdapter.getData());
setTotalInfo(totalTypeFood, totalAmount);
shoppingCartAdapter.notifyDataSetChanged();
} }
} }
}); });
} }
@OnClick({R2.id.btn_order_content_order_template, R2.id.btn_order_content_add_food, R2.id.tv_order_content_complete}) @OnClick({R2.id.btn_order_content_order_template, R2.id.btn_order_content_add_food, R2.id.tv_order_content_complete, R2.id.tv_order_content_cancel})
@Override @Override
public void onClick(View v) { public void onClick(View v) {
int viewId = v.getId(); int viewId = v.getId();
if (viewId == R.id.tv_order_content_complete) { if (viewId == R.id.tv_order_content_complete) {
//完成 //完成,篩選出選擇的食品
List<PurchaseFoodBean> purchaseFoodBeans = shoppingCartAdapter.getPurchaseFoodListVosBeans(); mPresenter.filterData(shoppingCartAdapter.getData());
//去到訂單確認頁面
boolean isHasChecked = false;
for (PurchaseFoodBean purchaseFoodBean : purchaseFoodBeans) {
if (purchaseFoodBean.isChecked()) {
isHasChecked = true;
break;
}
}
if (isHasChecked) {
//關閉選擇食材的頁面
AppDialog.getInstance().showWaringDialog(mContext, "確認創建採購單?", (view, dialog) -> {
dialog.dismiss();
mPresenter.addPurchaseOrder();
});
} else {
showMessage("請選擇食品");
}
} else if (viewId == R.id.btn_order_content_order_template) { } else if (viewId == R.id.btn_order_content_order_template) {
//訂單模板 //訂單模板
} else if (viewId == R.id.btn_order_content_add_food) { } else if (viewId == R.id.btn_order_content_add_food) {
//添加食材 //添加食材
startWithPop(FoodIngredientsFragment.newInstance(ADD_ORDER)); startWithPop(FoodIngredientsFragment.newInstance(ADD_ORDER));
} else if (viewId == R.id.tv_order_content_cancel) {
//取消
killMyself();
} }
} }
@Override @Override
public void loadAdapter(List<List<PurchaseFoodBean>> supplierFoods) { public void loadAdapter(List<ShoppingCartBean> shoppingCartBeans) {
shoppingCartAdapter = new ShoppingCartAdapter(mContext, supplierFoods); shoppingCartAdapter = new ShoppingCartAdapter(mContext, shoppingCartBeans);
shoppingCartAdapter.setOnFoodDeleteListener((supplierIndex, foodListVosBean) -> { shoppingCartAdapter.setOnFoodDeleteListener((supplierIndex, foodListVosBean) -> {
//刪除食品之後,這個供應商下面沒有食材才會調用這裡
//從購物車元數據移除掉這個食材
SupplyShoppingCart.getInstance().getCartFoods().remove(foodListVosBean); SupplyShoppingCart.getInstance().getCartFoods().remove(foodListVosBean);
List<ShoppingCartBean> shoppingCartAdapterData = shoppingCartAdapter.getData();
List<PurchaseFoodBean> purchaseFoodBeans = shoppingCartAdapter.getData().get(supplierIndex); if (foodListVosBean.isChecked()) {
purchaseFoodBeans.remove(foodListVosBean); totalSpecies = MoneyUtil.sub(totalSpecies, 1);
totalAmount = MoneyUtil.sub(totalAmount, shoppingCartAdapterData.get(supplierIndex).getSelectFoodAmount());
if (purchaseFoodBeans.size() <= 0) { setTotalInfo(totalSpecies, totalAmount);
shoppingCartAdapter.removeAt(supplierIndex);
} }
//購物車adapter移除這個供應商
shoppingCartAdapter.removeAt(supplierIndex);
setAllSelect(shoppingCartAdapterData);
}); });
rvOrderContent.setAdapter(shoppingCartAdapter); rvOrderContent.setAdapter(shoppingCartAdapter);
shoppingCartAdapter.setOnInfoChangeListener(() -> mPresenter.calculateTotalPrice(cbOrderContentAllSelect)); setAllSelect(shoppingCartBeans);
//當供應商裡面選中食品數量或價格有變化時回調,計算總價
shoppingCartAdapter.setOnInfoChangeListener((double changeAmount, int changeSpecies) -> {
totalAmount = MoneyUtil.sum(totalAmount, changeAmount);
totalSpecies += changeSpecies;
setTotalInfo(totalSpecies, totalAmount);
//這裡應該可以再加一個回調接口,用來專門處理食材的選中狀態切換
setAllSelect(shoppingCartAdapter.getData());
});
}
/**
* 設置是否全選
*/
public void setAllSelect(List<ShoppingCartBean> shoppingCartAdapterData) {
boolean checked = true;
for (ShoppingCartBean shoppingCartAdapterDatum : shoppingCartAdapterData) {
if (!shoppingCartAdapterDatum.isAllSelect()) {
checked = false;
break;
}
}
cbOrderContentAllSelect.setChecked(checked);
} }
@Override @Override
public void setTotalInfo(int typeTotal, double totalPrice) { public void setTotalInfo(int typeTotal, double totalPrice) {
totalSpecies = typeTotal;
totalAmount = totalPrice;
tvOrderContentFoodTypeTotal.setText(String.valueOf(typeTotal)); tvOrderContentFoodTypeTotal.setText(String.valueOf(typeTotal));
tvOrderContentTotalAmount.setText("$" + totalPrice); tvOrderContentTotalAmount.setText("$" + totalPrice);
} }
...@@ -170,4 +177,14 @@ public class ShoppingCatFragment extends BaseSupplyChainFragment<ShoppingCatPres ...@@ -170,4 +177,14 @@ public class ShoppingCatFragment extends BaseSupplyChainFragment<ShoppingCatPres
} }
startWithPop(SendMsgFragment.newInstance(purchaseOrders)); startWithPop(SendMsgFragment.newInstance(purchaseOrders));
} }
@Override
public void notifyAdapter(int position) {
if (position == -1) {
shoppingCartAdapter.notifyDataSetChanged();
} else {
shoppingCartAdapter.notifyItemChanged(position);
rvOrderContent.scrollToPosition(position);
}
}
} }
package com.gingersoft.supply_chain.mvp.ui.fragment.supplier; package com.gingersoft.supply_chain.mvp.ui.fragment.supplier;
import android.os.Bundle; import android.os.Bundle;
import android.util.Log;
import android.view.KeyEvent;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.view.inputmethod.EditorInfo;
import android.widget.EditText; import android.widget.EditText;
import android.widget.TextView;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
...@@ -29,6 +33,8 @@ import com.qmuiteam.qmui.alpha.QMUIAlphaTextView; ...@@ -29,6 +33,8 @@ import com.qmuiteam.qmui.alpha.QMUIAlphaTextView;
import com.qmuiteam.qmui.widget.QMUITopBar; import com.qmuiteam.qmui.widget.QMUITopBar;
import com.scwang.smartrefresh.layout.SmartRefreshLayout; import com.scwang.smartrefresh.layout.SmartRefreshLayout;
import org.jetbrains.annotations.NotNull;
import java.util.List; import java.util.List;
import butterknife.BindView; import butterknife.BindView;
...@@ -121,6 +127,16 @@ public class SupplierListFragment extends BaseSupplyChainFragment<SupplierListPr ...@@ -121,6 +127,16 @@ public class SupplierListFragment extends BaseSupplyChainFragment<SupplierListPr
pageIndex++; pageIndex++;
getSupplierList(); getSupplierList();
}); });
initEditText();
}
private void initEditText() {
edSupplier.setOnEditorActionListener((v, actionId, event) -> {
if (event != null) {
return true;
}
return false;
});
} }
private void getSupplierList() { private void getSupplierList() {
...@@ -140,10 +156,13 @@ public class SupplierListFragment extends BaseSupplyChainFragment<SupplierListPr ...@@ -140,10 +156,13 @@ public class SupplierListFragment extends BaseSupplyChainFragment<SupplierListPr
int viewId = v.getId(); int viewId = v.getId();
if (viewId == R.id.topbar_right_screen_button) { if (viewId == R.id.topbar_right_screen_button) {
//篩選 //篩選
} else if (viewId == R.id.btn_new_supplier) { } else if (viewId == R.id.btn_new_supplier) {
//新增供應商 //新增供應商
startForResult(NewSupplierFragment.newInstance(null), SUPPLIER_LIST); startForResult(NewSupplierFragment.newInstance(null), SUPPLIER_LIST);
} else if (viewId == R.id.btn_supplier_search) { } else if (viewId == R.id.btn_supplier_search) {
//搜索供應商
pageIndex = 0;
getSupplierList(); getSupplierList();
} else if (viewId == R.id.btn_supplier_cancel) { } else if (viewId == R.id.btn_supplier_cancel) {
killMyself(); killMyself();
...@@ -173,7 +192,7 @@ public class SupplierListFragment extends BaseSupplyChainFragment<SupplierListPr ...@@ -173,7 +192,7 @@ public class SupplierListFragment extends BaseSupplyChainFragment<SupplierListPr
} }
@Override @Override
public void loadSupplierList(List<SupplierInfoBean> supplierBeanList) { public void loadSupplierList(@NotNull List<SupplierInfoBean> supplierBeanList) {
smartRefreshLayout.finishRefresh(); smartRefreshLayout.finishRefresh();
smartRefreshLayout.finishLoadMore(); smartRefreshLayout.finishLoadMore();
if (supplierBeanList.size() == 0) { if (supplierBeanList.size() == 0) {
......
package com.gingersoft.supply_chain.mvp.ui.fragment.warehouse;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.EditText;
import android.widget.HorizontalScrollView;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.gingersoft.gsa.cloud.common.loadsir.EmptyCallback;
import com.gingersoft.gsa.cloud.common.loadsir.ErrorCallback;
import com.gingersoft.supply_chain.R;
import com.gingersoft.supply_chain.R2;
import com.gingersoft.supply_chain.di.component.DaggerWareHouseListComponent;
import com.gingersoft.supply_chain.mvp.bean.WareHouseListBean;
import com.gingersoft.supply_chain.mvp.contract.WareHouseListContract;
import com.gingersoft.supply_chain.mvp.presenter.WareHouseListPresenter;
import com.gingersoft.supply_chain.mvp.ui.adapter.WarehousingQueryAdapter;
import com.gingersoft.supply_chain.mvp.ui.fragment.BaseSupplyChainFragment;
import com.jess.arms.di.component.AppComponent;
import com.kingja.loadsir.callback.Callback;
import com.kingja.loadsir.callback.SuccessCallback;
import com.kingja.loadsir.core.LoadSir;
import com.qmuiteam.qmui.widget.QMUITopBar;
import com.scwang.smartrefresh.layout.SmartRefreshLayout;
import com.scwang.smartrefresh.layout.api.RefreshLayout;
import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener;
import com.scwang.smartrefresh.layout.listener.OnRefreshListener;
import java.util.List;
import butterknife.BindView;
import butterknife.OnClick;
/**
* 庫存查詢列表
*/
public class WareHouseListFragment extends BaseSupplyChainFragment<WareHouseListPresenter> implements WareHouseListContract.View {
@BindView(R2.id.supply_top_bar)
QMUITopBar supplyTopBar;
@BindView(R2.id.iv_warehouse_list_search)
ImageView ivWarehouseListSearch;
@BindView(R2.id.ed_warehouse_list_search)
EditText edWarehouseListSearch;
@BindView(R2.id.tv_overdue_food_num)
TextView tvOverdueFoodNum;
@BindView(R2.id.tv_expiring_soon_food_num)
TextView tvExpiringSoonFoodNum;
@BindView(R2.id.tv_low_inventory_food_num)
TextView tvLowInventoryFoodNum;
@BindView(R2.id.tv_ingredients_cost_inventory)
TextView tvIngredientsCostInventory;
@BindView(R2.id.rv_warehouse_list)
RecyclerView rvWarehouseList;
@BindView(R2.id.sl_warehousing_list)
SmartRefreshLayout smartRefreshLayout;
@BindView(R2.id.hs_warehousing_list)
HorizontalScrollView hsWarehousingList;
@BindView(R2.id.tv_warehouse_item_unit_price)
TextView tvUnitPrice;
@BindView(R2.id.tv_warehouse_item_inventory_quantity)
TextView tvWarehousingQuantity;
@BindView(R2.id.tv_warehouse_item_total_amount)
TextView tvTotalAmount;
private int SORT_TYPE = 0;
/**
* 升序或降序
*/
private boolean isAscending = false;
private int pageIndex = 0;
private WarehousingQueryAdapter warehousingQueryAdapter;
public static WareHouseListFragment newInstance() {
WareHouseListFragment fragment = new WareHouseListFragment();
return fragment;
}
@Override
public void setupFragmentComponent(@NonNull AppComponent appComponent) {
DaggerWareHouseListComponent //如找不到该类,请编译一下项目
.builder()
.appComponent(appComponent)
.view(this)
.build()
.inject(this);
}
@Override
public View initView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_ware_house_list, container, false);
}
@Override
public void initData(@Nullable Bundle savedInstanceState) {
smartRefreshLayout.setPrimaryColorsId(R.color.trans, R.color.black);
initTopBar(supplyTopBar, "庫存查詢");
loadService = LoadSir.getDefault().register(rvWarehouseList);
smartRefreshLayout.setOnRefreshListener(refreshLayout -> {
pageIndex = 0;
getWarehousing();
});
smartRefreshLayout.setOnLoadMoreListener(refreshLayout -> {
pageIndex++;
getWarehousing();
});
getWarehousing();
}
private void getWarehousing() {
mPresenter.getWarehousing(pageIndex, edWarehouseListSearch.getText() + "");
}
@OnClick({R2.id.iv_warehouse_list_search, R2.id.tv_warehouse_item_unit_price, R2.id.tv_warehouse_item_inventory_quantity, R2.id.tv_warehouse_item_total_amount})
public void OnClick(View view) {
int id = view.getId();
if (id == R.id.iv_warehouse_list_search) {
pageIndex = 0;
getWarehousing();
} else if (id == R.id.tv_warehouse_item_unit_price) {
//切換按單價排序
sort(mPresenter.SORT_UNIT_PRICE);
} else if (id == R.id.tv_warehouse_item_inventory_quantity) {
//按庫存數量排序
sort(mPresenter.SORT_WAREHOUSING_NUM);
} else if (id == R.id.tv_warehouse_item_total_amount) {
//按總價排序
sort(mPresenter.SORT_TOTAL_AMOUNT);
}
}
private void sort(int sortType) {
if (SORT_TYPE == sortType) {
isAscending = !isAscending;
} else {
SORT_TYPE = sortType;
}
mPresenter.sortByType(SORT_TYPE, isAscending);
}
@Override
public void loadWarehousingInfo(WareHouseListBean.WareHousingDataBean data) {
WareHouseListBean.WareHousingDataBean.TotalBean total = data.getTotal();
tvOverdueFoodNum.setText(total.getOverdue() + "");
tvExpiringSoonFoodNum.setText(total.getAboutExpire() + "");
tvLowInventoryFoodNum.setText(total.getOutStock() + "");
tvIngredientsCostInventory.setText(String.format(getString(R.string.amount_string), total.getCost()));
loadListInfo(data.getPurchaseWarehousingOrderDetailsVOS());
}
@Override
public void finishLoad() {
smartRefreshLayout.finishRefresh();
smartRefreshLayout.finishLoadMore();
}
@Override
public void loadFail() {
finishLoad();
loadService.showCallback(ErrorCallback.class);
}
@Override
public void loadListInfo(List<WareHouseListBean.WareHousingDataBean.PurchaseWarehousingOrderDetailsVOSBean> purchaseWarehousingOrderDetailsVos) {
if (purchaseWarehousingOrderDetailsVos == null || purchaseWarehousingOrderDetailsVos.size() <= 0) {
loadService.showCallback(EmptyCallback.class);
return;
} else {
loadService.showSuccess();
}
// WareHouseListBean.WareHousingDataBean.PurchaseWarehousingOrderDetailsVOSBean purchaseWarehousingOrderDetailsVosBean = new WareHouseListBean.WareHousingDataBean.PurchaseWarehousingOrderDetailsVOSBean();
// purchaseWarehousingOrderDetailsVosBean.setName("食材名");
// purchaseWarehousingOrderDetailsVosBean.setCateName("食材種類");
// purchaseWarehousingOrderDetailsVosBean.setSupplierName("供應商");
// purchaseWarehousingOrderDetailsVosBean.setBasicUnitName("單位");
// purchaseWarehousingOrderDetailsVosBean.setFoodPrice("單價");
// purchaseWarehousingOrderDetailsVosBean.setFoodNum("庫存數量");
// purchaseWarehousingOrderDetailsVosBean.setFoodAmount("總價");
// purchaseWarehousingOrderDetailsVos.add(0, purchaseWarehousingOrderDetailsVosBean);
if (warehousingQueryAdapter == null) {
warehousingQueryAdapter = new WarehousingQueryAdapter(mContext, purchaseWarehousingOrderDetailsVos);
rvWarehouseList.setLayoutManager(new LinearLayoutManager(mContext));
rvWarehouseList.setAdapter(warehousingQueryAdapter);
} else {
warehousingQueryAdapter.setList(purchaseWarehousingOrderDetailsVos);
}
}
}
package com.gingersoft.supply_chain.mvp.ui.fragment.warehouse;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import com.gingersoft.supply_chain.R;
import com.gingersoft.supply_chain.di.component.DaggerWareHousingDetailsComponent;
import com.gingersoft.supply_chain.mvp.contract.WareHousingDetailsContract;
import com.gingersoft.supply_chain.mvp.presenter.WareHousingDetailsPresenter;
import com.gingersoft.supply_chain.mvp.ui.fragment.BaseSupplyChainFragment;
import com.jess.arms.di.component.AppComponent;
/**
* ================================================
* Description: 入庫庫存詳情
*/
public class WareHousingDetailsFragment extends BaseSupplyChainFragment<WareHousingDetailsPresenter> implements WareHousingDetailsContract.View {
public static WareHousingDetailsFragment newInstance() {
WareHousingDetailsFragment fragment = new WareHousingDetailsFragment();
return fragment;
}
@Override
public void setupFragmentComponent(@NonNull AppComponent appComponent) {
DaggerWareHousingDetailsComponent //如找不到该类,请编译一下项目
.builder()
.appComponent(appComponent)
.view(this)
.build()
.inject(this);
}
@Override
public View initView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_ware_housing_details, container, false);
}
@Override
public void initData(@Nullable Bundle savedInstanceState) {
}
}
package com.gingersoft.supply_chain.mvp.ui.widget;
import android.content.Context;
import android.text.InputFilter;
import android.view.View;
import android.widget.EditText;
import androidx.annotation.NonNull;
import com.gingersoft.gsa.cloud.common.utils.inputFilter.InputFilterUtils;
import com.gingersoft.supply_chain.R;
import com.lxj.xpopup.impl.ConfirmPopupView;
import com.lxj.xpopup.impl.InputConfirmPopupView;
/**
* @author 宇航.
* User: admin
* Date: 2021/1/15
* Time: 9:45
* Use: 新增分類的彈窗
*/
public class CategoryPopup extends ConfirmPopupView {
private boolean showDelete;
private EditText et_input;
public CategoryPopup(@NonNull Context context, CharSequence title, CharSequence content, CharSequence hint, boolean showDelete) {
super(context, R.layout.dialog_new_category);
setTitleContent(title, content, hint);
this.showDelete = showDelete;
}
@Override
protected void onCreate() {
super.onCreate();
findViewById(R.id.iv_create_category_close).setOnClickListener(v -> dialog.dismiss());
findViewById(R.id.tv_cancel).setVisibility(showDelete ? View.VISIBLE : GONE);
et_input = findViewById(R.id.et_input);
et_input.setFilters(new InputFilter[]{InputFilterUtils.getLengthFilter(getContext(), 4), InputFilterUtils.getChAndEnAndNumInputFilter(getContext())});
}
public EditText getEditText() {
return et_input;
}
}
package com.gingersoft.supply_chain.mvp.utils;
/**
* @author 宇航.
* User: admin
* Date: 2021/1/14
* Time: 10:13
* Use: fragment頁面實現此接口,不攔截
*/
public interface NotDispatchListener {}
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