Commit e860097a by Wyh

1、外送優化、自動接單優化 2、供應鏈代碼提交

parent f1f53df5
...@@ -9,6 +9,7 @@ import com.gingersoft.gsa.delivery_pick_mode.data.network.CoolWeatherNetwork ...@@ -9,6 +9,7 @@ import com.gingersoft.gsa.delivery_pick_mode.data.network.CoolWeatherNetwork
import com.google.gson.Gson import com.google.gson.Gson
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.withContext import kotlinx.coroutines.withContext
import lombok.With
import okhttp3.FormBody import okhttp3.FormBody
import okhttp3.MediaType import okhttp3.MediaType
import okhttp3.RequestBody import okhttp3.RequestBody
...@@ -17,35 +18,42 @@ import kotlin.Pair as Pair1 ...@@ -17,35 +18,42 @@ import kotlin.Pair as Pair1
class WeatherRepository private constructor(private val network: CoolWeatherNetwork) { class WeatherRepository private constructor(private val network: CoolWeatherNetwork) {
suspend fun requestOrderList(restaurantId: String, status: String, type: String, page: String, orderNo: String, phone: String, appointmentType: Int) = withContext(Dispatchers.IO) { suspend fun requestOrderList(restaurantId: String, status: String, type: Int, page: String, orderNo: String, phone: String, appointmentType: Int) = withContext(Dispatchers.IO) {
val requestBody = FormBody.Builder() val requestBody = FormBody.Builder()
.add("restaurantId", restaurantId) .add("restaurantId", restaurantId)
.add("page", page) .add("page", page)
.add("status", status) .add("status", status)
.add("orderNo", orderNo) .add("orderNo", orderNo)
.add("phone", phone) .add("phone", phone)
.add("type", type) .add("type", type.toString())
.add("appointmentType", appointmentType.toString()) .add("appointmentType", appointmentType.toString())
.build() .build()
val heWeather = network.fetchOrderList(requestBody) val heWeather = network.fetchOrderList(requestBody)
heWeather heWeather
} }
suspend fun getToBeConfirmedOrderIds(restaurantId: Int, orderType: String) = withContext(Dispatchers.IO) {
network.getToBeConfirmedOrderIds(restaurantId, orderType)
}
/** /**
* 新的獲取訂單列表接口 * 新的獲取訂單列表接口
*/ */
suspend fun getNewOrderList(restaurantId: Int, appointmentType: Int, page: Int, pageSize: Int, status: String, orderNo: String, phone: String, type: Int) = withContext(Dispatchers.IO) { suspend fun getNewOrderList(restaurantId: Int, appointmentType: Int, page: Int, pageSize: Int, status: String, orderNo: String, phone: String, type: Int) = withContext(Dispatchers.IO) {
val requestBody = FormBody.Builder() val map = HashMap<String, Any>()
.add("restaurantId", restaurantId.toString()) map["restaurantId"] = restaurantId
.add("appointmentType", appointmentType.toString()) map["appointmentType"] = appointmentType
.add("page", page.toString()) map["page"] = page
.add("pageSize", pageSize.toString()) map["pageSize"] = pageSize
.add("status", status) map["status"] = status
.add("orderNo", orderNo) map["orderNo"] = orderNo
.add("phone", phone) map["phone"] = phone
.add("type", type.toString()) map["type"] = type
.build() network.getOrderList(map)
network.fetchOrderList(requestBody) }
suspend fun getOrderStatistics(restaurantId: Int, status: String) = withContext(Dispatchers.IO) {
network.getOrderStatistics(restaurantId, status)
} }
suspend fun getOrderGroup(restaurantId: String) = withContext(Dispatchers.IO) { suspend fun getOrderGroup(restaurantId: String) = withContext(Dispatchers.IO) {
...@@ -68,8 +76,7 @@ class WeatherRepository private constructor(private val network: CoolWeatherNetw ...@@ -68,8 +76,7 @@ class WeatherRepository private constructor(private val network: CoolWeatherNetw
val requestBody = FormBody.Builder() val requestBody = FormBody.Builder()
.add("orderId", orderId) .add("orderId", orderId)
.build() .build()
val data = network.getOrderInfo(requestBody) network.getOrderInfo(requestBody)
data
} }
suspend fun getShipanyOrderTime(restaurantId: String, orderId: String, type: Int) = withContext(Dispatchers.IO) { suspend fun getShipanyOrderTime(restaurantId: String, orderId: String, type: Int) = withContext(Dispatchers.IO) {
......
package com.gingersoft.gsa.delivery_pick_mode.data.model.bean;
/**
* @author 宇航.
* User: admin
* Date: 2021/3/16
* Time: 11:40
* Use:
*/
public class OrderListBean {
/**
* id : 11140410
* orderNo : 26210471152446517
* createTime : 2021-03-11 16:33:09.0
* addressDetail :
* payAmount : 153.6
* status : 2
* phone : 15073379600
* receiver :
* orderPayType : 1
* orderType : 7
* takeTime : 立即 18:33-18:33
* takeFoodCode : IKD4
* sendTime :
* waimaiSendTime : 2021-03-11 18:33:00.0
* memberName : zhangsa
* isRead : 1
* printStatus : 0
* timeSecond : 406956678
*/
private int id;
private String createTime;
//訂單編號
private String orderNo;
//詳細地址
private String addressDetail;
//支付金額
private double payAmount;
//支付名稱
private String payName;
//訂單狀態 #0:未支付;1:待確認(已支付, 待餐廳確認);2:製作中(餐廳確認);3:派送中;4:確認收貨(完成);5:是否評論;6:取消;
private int status;
//收貨電話
private String phone;
//收貨聯繫人
private String receiver;
//訂單支付類型:0 店內支付,1 貨到付款,2 在線支付
private int orderPayType;
//訂單類型#1:餐廳訂單;2:線上外賣訂單3:扫码点餐;4固定二维码订单;5:预点餐;6:積分訂單;7:自取订单;8:冷鏈
private int orderType;
//是否第三方物流派送 0 :否 1:是 2 創建了飯糰訂單未下物流單
private int isDelete;
//自取取貨時間
private String takeTime;
//取餐碼
private String takeFoodCode;
//餐廳送達描述
private String sendTime;
//外賣送達時間
private String waimaiSendTime;
//用戶名
private String memberName;
//是否已讀 0未讀,1已讀
private int isRead;
//打印上菜紙狀態:0 未打印,1 打印成功,2 打印失敗
private int printStatus;
// (物流公司類型為冷鏈時使用)是否已打印pdf 1 是 0 否
private String isPrintPdf;
// 運輸類型 1摩托車 2麵包車 3卡車
private int transportationType;
//超時時間
private int timeSecond;
//貨拉拉追加服務費
private int paymentValue;
//物流單號
private String trkNo;
//快遞員名稱
private String deliveryManName;
//快遞員電話
private String deliveryManPhoneNum;
//當前訂單狀態(第三方狀態)
private String curStat;
//配送類型 SHORT_RANGE (短途送)STANDARD (中途送)LONG_DISTANCE(長途送)
private String deliveryMode;
//當前訂單第三方物流狀態(第三方狀態轉換為數值)
//Order Created:1
//Pickup Request Sent:1
//Order Assigned To Delivery Man:2
//Delivery Man Reached Pickup Point Nearby:3
//Delivery Man Reached Pickup Point:4
//Delivery In Progress:5
//Delivery Man Reached Destination Nearby:6
//Order Delivered:7
//Order Cancelled Before Collection:8
//Order Cancelled After Collection:9
//Order Assigned To Another Delivery Man:10
//Collected By Customer:10
//Pickup Request Received:11
//Collected By Courier:12
//Dropped At Service Point:13
//In Transit:14
//Ready For Shipment:15
//Arrived Transit Point:16
//Shipping:17
//Delivered To Locker:18
//Delivered To Service Point:19
private int curStatNumber;
public int getIsDelete() {
return isDelete;
}
public void setIsDelete(int isDelete) {
this.isDelete = isDelete;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getOrderNo() {
return orderNo;
}
public void setOrderNo(String orderNo) {
this.orderNo = orderNo;
}
public String getCreateTime() {
return createTime;
}
public void setCreateTime(String createTime) {
this.createTime = createTime;
}
public String getAddressDetail() {
return addressDetail;
}
public void setAddressDetail(String addressDetail) {
this.addressDetail = addressDetail;
}
public double getPayAmount() {
return payAmount;
}
public void setPayAmount(double payAmount) {
this.payAmount = payAmount;
}
public int getStatus() {
return status;
}
public void setStatus(int status) {
this.status = status;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public String getReceiver() {
return receiver;
}
public void setReceiver(String receiver) {
this.receiver = receiver;
}
public int getOrderPayType() {
return orderPayType;
}
public void setOrderPayType(int orderPayType) {
this.orderPayType = orderPayType;
}
public int getOrderType() {
return orderType;
}
public void setOrderType(int orderType) {
this.orderType = orderType;
}
public String getTakeTime() {
return takeTime;
}
public void setTakeTime(String takeTime) {
this.takeTime = takeTime;
}
public String getTakeFoodCode() {
return takeFoodCode;
}
public void setTakeFoodCode(String takeFoodCode) {
this.takeFoodCode = takeFoodCode;
}
public String getSendTime() {
return sendTime;
}
public void setSendTime(String sendTime) {
this.sendTime = sendTime;
}
public String getWaimaiSendTime() {
return waimaiSendTime;
}
public void setWaimaiSendTime(String waimaiSendTime) {
this.waimaiSendTime = waimaiSendTime;
}
public String getMemberName() {
return memberName;
}
public void setMemberName(String memberName) {
this.memberName = memberName;
}
public int getIsRead() {
return isRead;
}
public void setIsRead(int isRead) {
this.isRead = isRead;
}
public int getPrintStatus() {
return printStatus;
}
public void setPrintStatus(int printStatus) {
this.printStatus = printStatus;
}
public int getTimeSecond() {
return timeSecond;
}
public void setTimeSecond(int timeSecond) {
this.timeSecond = timeSecond;
}
public String getPayName() {
return payName;
}
public void setPayName(String payName) {
this.payName = payName;
}
public String getIsPrintPdf() {
return isPrintPdf;
}
public void setIsPrintPdf(String isPrintPdf) {
this.isPrintPdf = isPrintPdf;
}
public int getTransportationType() {
return transportationType;
}
public void setTransportationType(int transportationType) {
this.transportationType = transportationType;
}
public int getPaymentValue() {
return paymentValue;
}
public void setPaymentValue(int paymentValue) {
this.paymentValue = paymentValue;
}
public String getTrkNo() {
return trkNo;
}
public void setTrkNo(String trkNo) {
this.trkNo = trkNo;
}
public String getDeliveryManName() {
return deliveryManName;
}
public void setDeliveryManName(String deliveryManName) {
this.deliveryManName = deliveryManName;
}
public String getDeliveryManPhoneNum() {
return deliveryManPhoneNum;
}
public void setDeliveryManPhoneNum(String deliveryManPhoneNum) {
this.deliveryManPhoneNum = deliveryManPhoneNum;
}
public String getCurStat() {
return curStat;
}
public void setCurStat(String curStat) {
this.curStat = curStat;
}
public String getDeliveryMode() {
return deliveryMode;
}
public void setDeliveryMode(String deliveryMode) {
this.deliveryMode = deliveryMode;
}
public int getCurStatNumber() {
return curStatNumber;
}
public void setCurStatNumber(int curStatNumber) {
this.curStatNumber = curStatNumber;
}
}
package com.gingersoft.gsa.delivery_pick_mode.data.model.bean;
import lombok.Data;
/**
* @author 宇航.
* User: admin
* Date: 2021/3/16
* Time: 14:47
* Use: 餐廳外送的營業信息
*/
public class RestaurantBusinessInfo {
// 當月支付成功的外賣單總數
private int takeawayOrderNumber;
// 當月支付成功的自取單總數
private int selfCollectionOrderNumber;
// 外賣訂單數
private int maxOrderTakeaway;
// 自取訂單數
private int maxOrderSelf;
// 餐廳狀態:0=休息中,1=營業中,2=繁忙中,3繁忙可接單
private int openStatus;
// 今日營業總金額
private double sumTotalAmount;
// 今日總訂單數
private int sumOrderNumber;
//外賣信息
private TakeOutSelfInfoBean takeoutType;
//自取信息
private TakeOutSelfInfoBean selfCollectionType;
// 即時單預約單信息
private OrderAppointment orderAppointment;
/**
* 外賣自取信息
*/
public static class TakeOutSelfInfoBean {
// 當天外賣訂單金額
private double totalAmount;
// 當天外賣訂單數量
private int dayOrderNumber;
public double getTotalAmount() {
return totalAmount;
}
public void setTotalAmount(double totalAmount) {
this.totalAmount = totalAmount;
}
public int getDayOrderNumber() {
return dayOrderNumber;
}
public void setDayOrderNumber(int dayOrderNumber) {
this.dayOrderNumber = dayOrderNumber;
}
}
/**
* 即時單預約單
*/
public static class OrderAppointment {
// 預約單數量
private int reservationNumber;
// 即時單數量
private int immediateNumber;
// 預約單配置時間(分鐘)
private long reservationConfigTime;
public int getReservationNumber() {
return reservationNumber;
}
public void setReservationNumber(int reservationNumber) {
this.reservationNumber = reservationNumber;
}
public int getImmediateNumber() {
return immediateNumber;
}
public void setImmediateNumber(int immediateNumber) {
this.immediateNumber = immediateNumber;
}
public long getReservationConfigTime() {
return reservationConfigTime;
}
public void setReservationConfigTime(long reservationConfigTime) {
this.reservationConfigTime = reservationConfigTime;
}
}
public int getSelfCollectionOrderNumber() {
return selfCollectionOrderNumber;
}
public void setSelfCollectionOrderNumber(int selfCollectionOrderNumber) {
this.selfCollectionOrderNumber = selfCollectionOrderNumber;
}
public int getMaxOrderTakeaway() {
return maxOrderTakeaway;
}
public void setMaxOrderTakeaway(int maxOrderTakeaway) {
this.maxOrderTakeaway = maxOrderTakeaway;
}
public int getMaxOrderSelf() {
return maxOrderSelf;
}
public void setMaxOrderSelf(int maxOrderSelf) {
this.maxOrderSelf = maxOrderSelf;
}
public int getOpenStatus() {
return openStatus;
}
public void setOpenStatus(int openStatus) {
this.openStatus = openStatus;
}
public double getSumTotalAmount() {
return sumTotalAmount;
}
public void setSumTotalAmount(double sumTotalAmount) {
this.sumTotalAmount = sumTotalAmount;
}
public int getSumOrderNumber() {
return sumOrderNumber;
}
public void setSumOrderNumber(int sumOrderNumber) {
this.sumOrderNumber = sumOrderNumber;
}
public int getTakeawayOrderNumber() {
return takeawayOrderNumber;
}
public void setTakeawayOrderNumber(int takeawayOrderNumber) {
this.takeawayOrderNumber = takeawayOrderNumber;
}
public TakeOutSelfInfoBean getTakeoutType() {
return takeoutType;
}
public void setTakeoutType(TakeOutSelfInfoBean takeoutType) {
this.takeoutType = takeoutType;
}
public TakeOutSelfInfoBean getSelfCollectionType() {
return selfCollectionType;
}
public void setSelfCollectionType(TakeOutSelfInfoBean selfCollectionType) {
this.selfCollectionType = selfCollectionType;
}
public OrderAppointment getOrderAppointment() {
return orderAppointment;
}
public void setOrderAppointment(OrderAppointment orderAppointment) {
this.orderAppointment = orderAppointment;
}
}
...@@ -6,7 +6,6 @@ import okhttp3.RequestBody ...@@ -6,7 +6,6 @@ import okhttp3.RequestBody
import retrofit2.Call import retrofit2.Call
import retrofit2.Callback import retrofit2.Callback
import retrofit2.Response import retrofit2.Response
import retrofit2.http.Query
import kotlin.coroutines.resume import kotlin.coroutines.resume
import kotlin.coroutines.resumeWithException import kotlin.coroutines.resumeWithException
import kotlin.coroutines.suspendCoroutine import kotlin.coroutines.suspendCoroutine
...@@ -23,7 +22,7 @@ class CoolWeatherNetwork { ...@@ -23,7 +22,7 @@ class CoolWeatherNetwork {
private val cloudService = ServiceCreator.create4(WeatherService::class.java) private val cloudService = ServiceCreator.create4(WeatherService::class.java)
private val orderPayService = ServiceCreator.create5(WeatherService::class.java) private val riceponOrderService = ServiceCreator.create5(WeatherService::class.java)
private val systemService = ServiceCreator.createSystem(WeatherService::class.java) private val systemService = ServiceCreator.createSystem(WeatherService::class.java)
...@@ -37,7 +36,13 @@ class CoolWeatherNetwork { ...@@ -37,7 +36,13 @@ class CoolWeatherNetwork {
suspend fun fetchOrderList(requestBody: RequestBody) = ricepon_WechatService.getOrderList(requestBody).await() suspend fun fetchOrderList(requestBody: RequestBody) = ricepon_WechatService.getOrderList(requestBody).await()
//新的獲取訂單列表 //新的獲取訂單列表
suspend fun getOrderList(requestBody: RequestBody) = ricepon_WechatService.getNewOrderList(requestBody).await() suspend fun getOrderList(map: Map<String, Any>) = riceponOrderService.getNewOrderList(map).await()
//獲取待確認的訂單id集合
suspend fun getToBeConfirmedOrderIds(restaurantId: Int, orderType: String) = riceponOrderService.getToBeConfirmedOrderIds(restaurantId, orderType).await()
//新的餐廳營業信息
suspend fun getOrderStatistics(restaurantId: Int, status: String) = riceponOrderService.getOrderStatistics(restaurantId, status).await()
//修改餐廳營業狀態 //修改餐廳營業狀態
suspend fun updateRestOpenStatus(requestBody: RequestBody) = service.updateRestOpenStatus(requestBody).await() suspend fun updateRestOpenStatus(requestBody: RequestBody) = service.updateRestOpenStatus(requestBody).await()
...@@ -58,7 +63,7 @@ class CoolWeatherNetwork { ...@@ -58,7 +63,7 @@ class CoolWeatherNetwork {
suspend fun gsUpdateOrderStatus(requestBody: RequestBody) = service.gsUpdateOrderStatus(requestBody).await() suspend fun gsUpdateOrderStatus(requestBody: RequestBody) = service.gsUpdateOrderStatus(requestBody).await()
//支付 //支付
suspend fun updateOrderPay(requestBody: RequestBody) = orderPayService.updateOrderPay(requestBody).await() suspend fun updateOrderPay(requestBody: RequestBody) = riceponOrderService.updateOrderPay(requestBody).await()
//第三方配送接口 //第三方配送接口
suspend fun thirdDelivery(requestBody: RequestBody) = gsposService.thirdDelivery(requestBody).await() suspend fun thirdDelivery(requestBody: RequestBody) = gsposService.thirdDelivery(requestBody).await()
...@@ -76,7 +81,7 @@ class CoolWeatherNetwork { ...@@ -76,7 +81,7 @@ class CoolWeatherNetwork {
//獲取歷史訂單 //獲取歷史訂單
suspend fun getHistoryOrderList(restaurantId: String, startTime: String, endTime: String, param: String, suspend fun getHistoryOrderList(restaurantId: String, startTime: String, endTime: String, param: String,
status: String, orderType: String, orderFrom:Int, pageIndex: String, pageSize: String) = orderPayService.getHistoryOrderList(restaurantId,startTime, endTime, param, status, orderType,orderFrom, pageIndex, pageSize).await() status: String, orderType: String, orderFrom: Int, pageIndex: String, pageSize: String) = riceponOrderService.getHistoryOrderList(restaurantId, startTime, endTime, param, status, orderType, orderFrom, pageIndex, pageSize).await()
//取消物流 //取消物流
suspend fun cancelLogistics(requestBody: RequestBody) = gsposService.cancelLogistics(requestBody).await() suspend fun cancelLogistics(requestBody: RequestBody) = gsposService.cancelLogistics(requestBody).await()
......
package com.gingersoft.gsa.delivery_pick_mode.data.network.api package com.gingersoft.gsa.delivery_pick_mode.data.network.api
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.gingersoft.gsa.delivery_pick_mode.data.model.bean.* import com.gingersoft.gsa.delivery_pick_mode.data.model.bean.*
import okhttp3.RequestBody import okhttp3.RequestBody
import retrofit2.Call import retrofit2.Call
import retrofit2.http.Body import retrofit2.http.*
import retrofit2.http.GET
import retrofit2.http.POST
import retrofit2.http.Query
interface WeatherService { interface WeatherService {
@POST("wechat/findOrderList") @POST("wechat/findOrderList")
fun getOrderList(@Body requestBody: RequestBody): Call<OrderList> fun getOrderList(@Body requestBody: RequestBody): Call<OrderList>
@POST("orderInfo/getOrderList") @GET("orderInfo/getOrderList")
fun getNewOrderList(@Body requestBody: RequestBody): Call<OrderList> fun getNewOrderList(@QueryMap map: Map<String, @JvmSuppressWildcards Any>): Call<BaseResult>
@GET("orderInfo/getOrderStatistics")
fun getOrderStatistics(@Query("restaurantId") restaurantId: Int, @Query("status") status: String): Call<BaseResult>
@GET("orderInfo/getOrderByIdList")
fun getToBeConfirmedOrderIds(@Query("restaurantId") restaurantId: Int, @Query("orderType") orderType: String): Call<BaseResult>
@POST("wx/updateRestOpenStatus") @POST("wx/updateRestOpenStatus")
fun updateRestOpenStatus(@Body requestBody: RequestBody): Call<MessageBean> fun updateRestOpenStatus(@Body requestBody: RequestBody): Call<MessageBean>
...@@ -53,13 +57,10 @@ interface WeatherService { ...@@ -53,13 +57,10 @@ interface WeatherService {
@POST("gsa/getDeliveryConfigDTO") @POST("gsa/getDeliveryConfigDTO")
fun getDeliveryConfigDTO(@Body requestBody: RequestBody): Call<DeliveryConfig> fun getDeliveryConfigDTO(@Body requestBody: RequestBody): Call<DeliveryConfig>
// @POST("wechat/findHistoryOrderList")
// fun getHistoryOrderList(@Body requestBody: RequestBody): Call<HistoryOrderBean>
@GET("historyOrder/getOrderList") @GET("historyOrder/getOrderList")
fun getHistoryOrderList(@Query("restaurantId") restaurantId: String, fun getHistoryOrderList(@Query("restaurantId") restaurantId: String,
@Query("startTime") startTime: String, @Query("endTime") endTime: String, @Query("param") param: String, @Query("startTime") startTime: String, @Query("endTime") endTime: String, @Query("param") param: String,
@Query("status") status: String, @Query("orderType") orderType: String, @Query("orderFrom") orderFrom: Int,@Query("pageIndex") pageIndex: String, @Query("pageSize") pageSize: String): Call<HistoryOrderBean> @Query("status") status: String, @Query("orderType") orderType: String, @Query("orderFrom") orderFrom: Int, @Query("pageIndex") pageIndex: String, @Query("pageSize") pageSize: String): Call<HistoryOrderBean>
@POST("gsa/cancelOrder") @POST("gsa/cancelOrder")
fun cancelLogistics(@Body requestBody: RequestBody): Call<CancelLogisticsBean> fun cancelLogistics(@Body requestBody: RequestBody): Call<CancelLogisticsBean>
......
...@@ -38,6 +38,7 @@ import com.gingersoft.gsa.cloud.ui.utils.DialogUtils ...@@ -38,6 +38,7 @@ import com.gingersoft.gsa.cloud.ui.utils.DialogUtils
import com.gingersoft.gsa.delivery_pick_mode.R import com.gingersoft.gsa.delivery_pick_mode.R
import com.gingersoft.gsa.delivery_pick_mode.databinding.ActivityOtherOrderBinding import com.gingersoft.gsa.delivery_pick_mode.databinding.ActivityOtherOrderBinding
import com.gingersoft.gsa.delivery_pick_mode.model.viewModel.PageViewModel import com.gingersoft.gsa.delivery_pick_mode.model.viewModel.PageViewModel
import com.gingersoft.gsa.delivery_pick_mode.model.viewModel.PageViewModel.Companion.fragmentStatus
import com.gingersoft.gsa.delivery_pick_mode.mvp.ui.activity.SendOrderActivity import com.gingersoft.gsa.delivery_pick_mode.mvp.ui.activity.SendOrderActivity
import com.gingersoft.gsa.delivery_pick_mode.ui.adapter.SectionsPagerAdapter import com.gingersoft.gsa.delivery_pick_mode.ui.adapter.SectionsPagerAdapter
import com.gingersoft.gsa.delivery_pick_mode.ui.base.BaseActivity import com.gingersoft.gsa.delivery_pick_mode.ui.base.BaseActivity
...@@ -78,8 +79,10 @@ class DeliveryOrderMainActivity : BaseActivity<IPresenter>(), View.OnClickListen ...@@ -78,8 +79,10 @@ class DeliveryOrderMainActivity : BaseActivity<IPresenter>(), View.OnClickListen
private var btnHeight: Float = 0F private var btnHeight: Float = 0F
var bind: DataNotificationService.MyBind? = null var bind: DataNotificationService.MyBind? = null
//最後一次長連接過來的消息類型 //最後一次長連接過來的消息類型
var lastMsgType: Int = 0 var lastMsgType: Int = 0
//是否展開餐廳營業信息 //是否展開餐廳營業信息
private var isOpen: Boolean = true private var isOpen: Boolean = true
...@@ -112,8 +115,6 @@ class DeliveryOrderMainActivity : BaseActivity<IPresenter>(), View.OnClickListen ...@@ -112,8 +115,6 @@ class DeliveryOrderMainActivity : BaseActivity<IPresenter>(), View.OnClickListen
initViewPager() initViewPager()
//搜索 //搜索
searchMethod() searchMethod()
//餐廳營業信息
loadRestaurantInfo(binding)
//獲取餐廳營業信息展示欄的高度 //獲取餐廳營業信息展示欄的高度
initInfoHeight() initInfoHeight()
initOrderCheckedState() initOrderCheckedState()
...@@ -122,11 +123,35 @@ class DeliveryOrderMainActivity : BaseActivity<IPresenter>(), View.OnClickListen ...@@ -122,11 +123,35 @@ class DeliveryOrderMainActivity : BaseActivity<IPresenter>(), View.OnClickListen
//自動接單按鈕點擊事件 //自動接單按鈕點擊事件
cb_takeaway_auto_receiving_orders.setOnCheckedChangeListener { _, isChecked -> cb_takeaway_auto_receiving_orders.setOnCheckedChangeListener { _, isChecked ->
RestaurantExpandInfoUtils.setValue(ExpandConstant.TakeawayAutoOrder, isChecked) RestaurantExpandInfoUtils.setValue(ExpandConstant.TakeawayAutoOrder, isChecked)
pageViewModel.autoReceiver = isChecked
} }
pageViewModel.apply { pageViewModel.apply {
autoReceiver = cb_takeaway_auto_receiving_orders.isChecked
//獲取配送員信息 //獲取配送員信息
getDeliveryInfo() getDeliveryInfo()
//監聽餘額類 //獲取餐廳營業信息與預約單數量信息
getOrderStatistics(fragmentStatus[0])
//獲取餘額信息
getBalance(RestaurantInfoManager.newInstance().brandId)
//第一次獲取數據
getCurrentPageOrderList()
//餐廳營業信息刷新監聽
restaurantBusinessInfo.observe(this@DeliveryOrderMainActivity, Observer {
binding.data = it
//外送訂單數
sb_takeaway.max = if (it.maxOrderTakeaway == 0) 1 else it.maxOrderTakeaway
//即時單和預約單
val orderAppointment = it.orderAppointment
//即時單數量
tv_immediate_order_num.visibility = View.VISIBLE
tv_immediate_order_num.text = orderAppointment.immediateNumber.toString()
//預約單單數
tv_booking_order_num.visibility = View.VISIBLE
tv_booking_order_num.text = orderAppointment.reservationNumber.toString()
//預約單時間
tv_booking_order.text = String.format(getString(R.string.str_reservation_time), orderAppointment.reservationConfigTime)
})
//餘額刷新監聽
balanceBean.observe(this@DeliveryOrderMainActivity, Observer { balanceBean.observe(this@DeliveryOrderMainActivity, Observer {
it?.data?.let { data -> it?.data?.let { data ->
tv_balance.text = "餘額:${data.balance}" + "(保證金: ${data.bond} )" tv_balance.text = "餘額:${data.balance}" + "(保證金: ${data.bond} )"
...@@ -138,20 +163,6 @@ class DeliveryOrderMainActivity : BaseActivity<IPresenter>(), View.OnClickListen ...@@ -138,20 +163,6 @@ class DeliveryOrderMainActivity : BaseActivity<IPresenter>(), View.OnClickListen
} }
} }
}) })
//監聽即時單單數
instantOrderNum.observe(this@DeliveryOrderMainActivity, Observer {
tv_immediate_order_num.visibility = View.VISIBLE
tv_immediate_order_num.text = it.toString()
})
//監聽預約單單數
bookingOrderNum.observe(this@DeliveryOrderMainActivity, Observer {
tv_booking_order_num.visibility = View.VISIBLE
tv_booking_order_num.text = it.toString()
})
//監聽預約單時間
bookingConfigTime.observe(this@DeliveryOrderMainActivity, Observer {
tv_booking_order.text = "預約單($it" + "分)"
})
} }
} }
...@@ -210,50 +221,26 @@ class DeliveryOrderMainActivity : BaseActivity<IPresenter>(), View.OnClickListen ...@@ -210,50 +221,26 @@ class DeliveryOrderMainActivity : BaseActivity<IPresenter>(), View.OnClickListen
} }
override fun onPageSelected(position: Int) { override fun onPageSelected(position: Int) {
pageViewModel.refreshState.postValue(position) //每次切換時去獲取訂單列表
pageViewModel.getNewOrderList(1, fragmentStatus[position], PageViewModel.fragmentType[position])
//只有全部||待確認 狀態下,才查詢即時單、預約單數量
//控制即時單預約單layout的顯示與隱藏
if (position != 0 && position != 1) { if (position != 0 && position != 1) {
layout_order_type.visibility = View.GONE layout_order_type.visibility = View.GONE
} else { } else {
pageViewModel.getOrderStatistics(fragmentStatus[position])
layout_order_type.visibility = View.VISIBLE layout_order_type.visibility = View.VISIBLE
} }
} }
}) })
} }
override fun onStart() {
super.onStart()
pageViewModel.getBanlance(RestaurantInfoManager.newInstance().brandId)
}
private fun initOutTime() { private fun initOutTime() {
//初始化外送接單超時時間,如果超過這個時間未接單,這個訂單會顯示超時 //初始化外送接單超時時間,如果超過這個時間未接單,這個訂單會顯示超時
pageViewModel.timeOut = RestaurantExpandInfoUtils.getValue(ExpandConstant.OrderReceivingTimeout, 0) pageViewModel.timeOut = RestaurantExpandInfoUtils.getValue(ExpandConstant.OrderReceivingTimeout, 0)
} }
/** /**
* 加載餐廳營業信息
*/
private fun loadRestaurantInfo(binding: ActivityOtherOrderBinding) {
pageViewModel.otherInfo.observe(this, Observer {
binding.data = pageViewModel
sb_takeaway.max = if (it.MaxOrder == 0) 1 else it.MaxOrder
sb_takeaway.progress = it.num
sb_self.max = it.maxOrderSelf
sb_self.progress = it.selflNum
if (it.orderType_2 != null) {
tv_takeaway_num.text = it.orderType_2!!.typeDayOrderNum.toString()
tv_takeaway_amount.text = "$" + it.orderType_2!!.typeTotalAmount.toString()
}
if (it.orderType_7 != null) {
tv_today_self_order_num.text = it.orderType_7!!.typeDayOrderNum.toString()
tv_today_self_amount_num.text = "$" + it.orderType_7!!.typeTotalAmount.toString()
}
})
}
/**
* 初始化viewpager的tab指示器 * 初始化viewpager的tab指示器
*/ */
private fun initTabs() { private fun initTabs() {
...@@ -291,7 +278,7 @@ class DeliveryOrderMainActivity : BaseActivity<IPresenter>(), View.OnClickListen ...@@ -291,7 +278,7 @@ class DeliveryOrderMainActivity : BaseActivity<IPresenter>(), View.OnClickListen
//搜索 //搜索
if (ed_order_num_search.text != null && ed_order_num_search.text.isNotEmpty()) { if (ed_order_num_search.text != null && ed_order_num_search.text.isNotEmpty()) {
pageViewModel.phone = ed_order_num_search.text.toString() pageViewModel.phone = ed_order_num_search.text.toString()
pageViewModel.getOrderList(view_pager.currentItem, "0", false) getCurrentPageOrderList()
} else { } else {
ToastUtils.show(this@DeliveryOrderMainActivity, "請輸入手機號或訂單號") ToastUtils.show(this@DeliveryOrderMainActivity, "請輸入手機號或訂單號")
} }
...@@ -443,7 +430,6 @@ class DeliveryOrderMainActivity : BaseActivity<IPresenter>(), View.OnClickListen ...@@ -443,7 +430,6 @@ class DeliveryOrderMainActivity : BaseActivity<IPresenter>(), View.OnClickListen
super.onDestroy() super.onDestroy()
bind?.setOnPostCallBack(null) bind?.setOnPostCallBack(null)
bind?.execute {} bind?.execute {}
cancelDialogForLoading()
unregisterReceiver(mReceiver) unregisterReceiver(mReceiver)
unbindService(serviceConnection) unbindService(serviceConnection)
} }
...@@ -460,15 +446,18 @@ class DeliveryOrderMainActivity : BaseActivity<IPresenter>(), View.OnClickListen ...@@ -460,15 +446,18 @@ class DeliveryOrderMainActivity : BaseActivity<IPresenter>(), View.OnClickListen
|| type == 6 || type == 7) { || type == 6 || type == 7) {
//上次是未確認訂單,本次的提示還是未確認訂單,就不刷新本地頁面 //上次是未確認訂單,本次的提示還是未確認訂單,就不刷新本地頁面
if (!(lastMsgType == 5 && type == 5)) { if (!(lastMsgType == 5 && type == 5)) {
pageViewModel.refreshState.postValue(view_pager.currentItem) getCurrentPageOrderList()
// 刷新餘額 // 刷新餘額
pageViewModel.getBanlance(RestaurantInfoManager.newInstance().brandId) pageViewModel.getBalance(RestaurantInfoManager.newInstance().brandId)
} }
lastMsgType = type lastMsgType = type
// 選擇了自動接單,有訂單來就接單 // 選擇了自動接單,有訂單來就接單
if (cb_takeaway_auto_receiving_orders.isChecked) { if (cb_takeaway_auto_receiving_orders.isChecked) {
pageViewModel.startAutoConfirmOrder() //查詢待確定的訂單id
pageViewModel.getToBeConfirmedOrderIds()
} }
//獲取每個狀態的訂單數量
pageViewModel.getOrderGroupNum()
} }
} }
}) })
...@@ -488,6 +477,13 @@ class DeliveryOrderMainActivity : BaseActivity<IPresenter>(), View.OnClickListen ...@@ -488,6 +477,13 @@ class DeliveryOrderMainActivity : BaseActivity<IPresenter>(), View.OnClickListen
} }
/** /**
* 獲取當前頁面訂單列表
*/
private fun getCurrentPageOrderList() {
pageViewModel.getNewOrderList(1, fragmentStatus[view_pager.currentItem], PageViewModel.fragmentType[view_pager.currentItem])
}
/**
* 顯示或收起餐廳營業信息 * 顯示或收起餐廳營業信息
*/ */
private fun setOrderInfoOpenOrClose() { private fun setOrderInfoOpenOrClose() {
......
...@@ -69,7 +69,6 @@ class OrderDetailsActivity : BaseActivity<IPresenter>() { ...@@ -69,7 +69,6 @@ class OrderDetailsActivity : BaseActivity<IPresenter>() {
lateinit var skeletonScreen: ViewSkeletonScreen lateinit var skeletonScreen: ViewSkeletonScreen
var restaurantId: Int = -1 var restaurantId: Int = -1
private var orderNo: String? = null
lateinit var rvThirdExpenses: RecyclerView lateinit var rvThirdExpenses: RecyclerView
lateinit var thirdExpensesLayout: LinearLayout lateinit var thirdExpensesLayout: LinearLayout
...@@ -127,7 +126,7 @@ class OrderDetailsActivity : BaseActivity<IPresenter>() { ...@@ -127,7 +126,7 @@ class OrderDetailsActivity : BaseActivity<IPresenter>() {
if (it?.data != null && it.data!!.isNotEmpty()) { if (it?.data != null && it.data!!.isNotEmpty()) {
//初始化頁面佈局 //初始化頁面佈局
val orderDetails = it.data!![0] val orderDetails = it.data!![0]
orderNo = orderDetails.ORDER_NO.toString() val orderNo = orderDetails.ORDER_NO.toString()
//訂單編號點擊事件 //訂單編號點擊事件
tv_order_details_order_no.setOnClickListener { tv_order_details_order_no.setOnClickListener {
ClipboardUtils.copyText(orderNo) ClipboardUtils.copyText(orderNo)
......
package com.gingersoft.gsa.delivery_pick_mode.ui.adapter
import android.animation.AnimatorSet
import android.animation.ObjectAnimator.ofFloat
import android.animation.ValueAnimator
import android.content.Context
import android.graphics.drawable.GradientDrawable
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.FrameLayout
import androidx.core.content.ContextCompat
import androidx.databinding.DataBindingUtil
import androidx.recyclerview.widget.RecyclerView
import androidx.recyclerview.widget.RecyclerView.Adapter
import com.gingersoft.gsa.delivery_pick_mode.R
import com.gingersoft.gsa.delivery_pick_mode.data.model.bean.OrderListBean
import com.gingersoft.gsa.delivery_pick_mode.databinding.LayoutDeliveryOrderItemBinding
import com.scwang.smartrefresh.layout.util.SmartUtil.dp2px
class OrderListAdapter(var context: Context, var outTime: Int, var dataBean: List<OrderListBean> = ArrayList()) : Adapter<OrderListAdapter.ViewHolder>() {
private var listener: ((item: OrderListBean) -> Unit)? = null
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
return ViewHolder(LayoutInflater.from(parent.context).inflate(R.layout.layout_delivery_order_item, parent, false))
}
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
val data = dataBean[position]
holder.binding.data = data
holder.binding.isSelf = data.orderType == 7
if (data.orderType != 7 && data.isDelete == 0) {
holder.binding.deliveryState = when (data.curStatNumber) {
1 -> "已通知物流"
2 -> "配送員已接單"
3 -> "配送員到店附近"
4 -> "配送員已到店"
5 -> "配送中"
6 -> "到達目的地附近"
7 -> "訂單已完成"
8 -> "物流已取消"//取餐前
9 -> "物流已取消"//取餐後
10 -> "已指派另一位配送員"
else -> ""
}
if (data.curStatNumber < 2) {
//是否超時
if (outTime == 0) {
holder.binding.isTimeOut = false
} else {
holder.binding.isTimeOut = data.timeSecond < outTime
}
}
} else {
holder.binding.deliveryState = ""
holder.binding.isTimeOut = false
}
holder.binding.vehicle = when (data.transportationType) {
1 -> ContextCompat.getDrawable(holder.itemView.context, R.drawable.ic_motorcycle)
2 -> ContextCompat.getDrawable(holder.itemView.context, R.drawable.ic_bread_car)
3 -> ContextCompat.getDrawable(holder.itemView.context, R.drawable.ic_truck)
else -> null
}
var state: String? = null
val bg = GradientDrawable()
bg.cornerRadius = dp2px(5f).toFloat()
holder.flBorder.visibility = View.GONE//隱藏邊框
//執行動畫
if (data.isRead == 0) {
holder.flBorder.visibility = View.VISIBLE//顯示邊框
alphaAnimator(holder.flBorder)
} else {
holder.flBorder.visibility = View.GONE
holder.flBorder.clearAnimation()
}
when (data.status) {
0 -> {
state = "待確認"
bg.setColor(getColor(R.color.order_state0_color))
}
1 -> {
state = "待確認"
bg.setColor(getColor(R.color.order_state0_color))
holder.flBorder.visibility = View.VISIBLE//顯示邊框
}
2 -> {
state = "製作中"
bg.setColor(getColor(R.color.order_state1_color))
}
8 -> {
state = "待製作"
bg.setColor(getColor(R.color.order_state4_color))
holder.flBorder.visibility = View.VISIBLE//顯示邊框
alphaAnimator(holder.flBorder)
}
3 -> {
state = if (data.orderType == 7) {
"待取餐"
} else {
"派送中"
}
bg.setColor(getColor(R.color.order_state2_color))
}
}
holder.binding.state = state
holder.binding.stateBg = bg
//堂食外賣背景
val orderingMethodBg = GradientDrawable()
orderingMethodBg.shape = GradientDrawable.RECTANGLE
orderingMethodBg.cornerRadii = floatArrayOf(dp2px(8f).toFloat(), dp2px(8f).toFloat(), 0f, 0f, 0f, 0f, dp2px(8f).toFloat(), dp2px(8f).toFloat())
holder.binding.orderingMethod =
when (data.orderType) {
2 -> {
orderingMethodBg.setColor(getColor(R.color.order_state2_color))
"外送"
}
7 -> {
orderingMethodBg.setColor(getColor(R.color.order_state3_color))
"自取"
}
else -> {
orderingMethodBg.setColor(getColor(R.color.order_state1_color))
"堂食"
}
}
holder.binding.orderingMethodBg = orderingMethodBg
//支付方式背景 data.orderPayType==1?@color/table_send:@color/table_use
//data.orderPayType==1?@string/cash_on_delivery:@string/online_payments
val payMethodBg = GradientDrawable()
payMethodBg.cornerRadius = dp2px(10f).toFloat()
holder.binding.payMethod =
when (data.orderPayType) {
1 -> {
payMethodBg.setColor(getColor(R.color.cash_on_delivery_bg))
"貨到付款"
}
else -> {
payMethodBg.setColor(getColor(R.color.online_payments_bg))
"在線支付"
}
}
holder.binding.payMethodBg = payMethodBg
holder.itemView.setOnClickListener {
listener?.invoke(data)
}
}
fun setOnItemClickListener(listener: (item: OrderListBean) -> Unit) {
this.listener = listener
}
fun setData(dataBean: List<OrderListBean>) {
this.dataBean = dataBean
notifyDataSetChanged()
}
private fun alphaAnimator(view: View) {
view.clearAnimation()
val animatorSet = AnimatorSet()
val ofFloat = ofFloat(view, "alpha", 0f, 1f)
ofFloat.duration = 200
ofFloat.repeatCount = -1
ofFloat.repeatMode = ValueAnimator.REVERSE
val ofFloat1 = ofFloat(view, "alpha", 1f, 0f)
ofFloat1.duration = 200
ofFloat1.repeatCount = -1
ofFloat1.repeatMode = ValueAnimator.REVERSE
animatorSet.play(ofFloat).with(ofFloat1)
animatorSet.duration = 400
animatorSet.start()
}
override fun getItemCount(): Int {
return dataBean.size
}
private fun getColor(color: Int): Int {
return ContextCompat.getColor(context, color)
}
class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
var binding: LayoutDeliveryOrderItemBinding = DataBindingUtil.bind(itemView)!!
var flBorder: FrameLayout = itemView.findViewById(R.id.fl_border)
}
}
\ No newline at end of file
...@@ -19,6 +19,11 @@ open class BaseActivity<P : IPresenter> : BaseActivity<P>() { ...@@ -19,6 +19,11 @@ open class BaseActivity<P : IPresenter> : BaseActivity<P>() {
LoadingDialog.cancelDialogForLoading() LoadingDialog.cancelDialogForLoading()
} }
override fun onStop() {
super.onStop()
cancelDialogForLoading()
}
override fun setupActivityComponent(appComponent: AppComponent) { override fun setupActivityComponent(appComponent: AppComponent) {
} }
......
...@@ -2,23 +2,17 @@ package com.gingersoft.gsa.delivery_pick_mode.ui.fragment ...@@ -2,23 +2,17 @@ package com.gingersoft.gsa.delivery_pick_mode.ui.fragment
import android.content.Intent import android.content.Intent
import android.os.Bundle import android.os.Bundle
import android.util.Log
import androidx.lifecycle.MutableLiveData import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.Observer import androidx.lifecycle.Observer
import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.ViewModelProvider
import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.LinearLayoutManager
import com.gingersoft.gsa.cloud.common.core.restaurant.RestaurantInfoManager
import com.gingersoft.gsa.cloud.common.core.user.UserContext
import com.gingersoft.gsa.cloud.common.utils.other.TextUtil
import com.gingersoft.gsa.cloud.common.utils.toast.ToastUtils
import com.gingersoft.gsa.delivery_pick_mode.R import com.gingersoft.gsa.delivery_pick_mode.R
import com.gingersoft.gsa.delivery_pick_mode.model.viewModel.PageViewModel import com.gingersoft.gsa.delivery_pick_mode.model.viewModel.PageViewModel
import com.gingersoft.gsa.delivery_pick_mode.ui.activity.OrderDetailsActivity import com.gingersoft.gsa.delivery_pick_mode.ui.activity.OrderDetailsActivity
import com.gingersoft.gsa.delivery_pick_mode.ui.adapter.OtherOrdersAdapter import com.gingersoft.gsa.delivery_pick_mode.ui.adapter.OrderListAdapter
import com.gingersoft.gsa.delivery_pick_mode.ui.base.BaseFragment import com.gingersoft.gsa.delivery_pick_mode.ui.base.BaseFragment
import com.gingersoft.gsa.delivery_pick_mode.util.InjectorUtil import com.gingersoft.gsa.delivery_pick_mode.util.InjectorUtil
import com.gingersoft.gsa.delivery_pick_mode.util.setState import com.gingersoft.gsa.delivery_pick_mode.util.setState
import com.jess.arms.utils.LogUtils
import kotlinx.android.synthetic.main.fragment_other_order.* import kotlinx.android.synthetic.main.fragment_other_order.*
/** /**
...@@ -26,57 +20,50 @@ import kotlinx.android.synthetic.main.fragment_other_order.* ...@@ -26,57 +20,50 @@ import kotlinx.android.synthetic.main.fragment_other_order.*
*/ */
class PlaceholderFragment : BaseFragment(R.layout.fragment_other_order) { class PlaceholderFragment : BaseFragment(R.layout.fragment_other_order) {
private val pageViewModel by lazy { ViewModelProvider(activity?.viewModelStore!!, InjectorUtil.getWeatherModelFactory())[PageViewModel::class.java] } private val pageViewModel by lazy { ViewModelProvider(activity?.viewModelStore!!, InjectorUtil.getWeatherModelFactory())[PageViewModel::class.java] }
//請求數據頁數 //請求數據頁數
private var page = 1 private var page = 1
//當前fragment是第幾頁 //當前fragment是第幾頁
private var position = 0 private var position = 0
private lateinit var adapter: OtherOrdersAdapter
private lateinit var adapter: OrderListAdapter
override fun onActivityCreated(savedInstanceState: Bundle?) { override fun onActivityCreated(savedInstanceState: Bundle?) {
super.onActivityCreated(savedInstanceState) super.onActivityCreated(savedInstanceState)
//獲取頁數 //獲取當前頁數
position = arguments?.getInt(INDEX) ?: 0 position = arguments?.getInt(INDEX) ?: 0
pageViewModel.apply { pageViewModel.apply {
// 綁定狀態,如果這個值發生變化,並且是當前頁,就去獲取訂單列表 showLoading.observe(viewLifecycleOwner, Observer {
refreshState.observe(viewLifecycleOwner, Observer { if (it) {
if (position == it) { showLoading("加載中...")
page = 1 } else {
getOrderList(false)
}
})
//有多少個Fragment就添加多少個監聽
while (mFragmentData.size <= position) {
mFragmentData.add(MutableLiveData())
}
// 綁定監聽當前fragment的數據項
mFragmentData[position].observe(viewLifecycleOwner, Observer {
cancelDialogForLoading() cancelDialogForLoading()
}
refresh_layout.finishRefresh() refresh_layout.finishRefresh()
refresh_layout.finishLoadMore() refresh_layout.finishLoadMore()
})
// 綁定狀態,如果這個值發生變化,並且是當前頁,就去獲取訂單列表
// refreshState.observe(viewLifecycleOwner, Observer {
// if (position == it) {
// page = 1
// getOrderList()
// }
// })
// 綁定監聽當前fragment的數據項
// mFragmentData[position].observe(viewLifecycleOwner, Observer {
// it?.let {
// layout_nodata.setState(it.size <= 0)
// adapter.setData(it)
// }
// })
newOrderList.observe(viewLifecycleOwner, Observer {
it?.let { it?.let {
layout_nodata.setState(it.size <= 0) layout_nodata.setState(it.size <= 0)
adapter.setData(it) adapter.setData(it)
} }
}) })
//切換預約單狀態監聽
orderList.observe(viewLifecycleOwner, Observer {
refresh_layout.finishRefresh()
refresh_layout.finishLoadMore()
it?.let {
if (!it.isSuccess()) {
if (TextUtil.isNotEmptyOrNullOrUndefined(it.errMsg)) {
//訂單未請求成功才調用
ToastUtils.show(activity, it.errMsg)
} else {
ToastUtils.show(activity, "獲取訂單列表失敗")
}
}
}
})
appointmentType.observe(viewLifecycleOwner, Observer { appointmentType.observe(viewLifecycleOwner, Observer {
if (position <= 1) { if (position <= 1) {
//判斷小於1是因為只有 前兩個狀態才有預約單 //判斷小於1是因為只有 前兩個狀態才有預約單
...@@ -86,6 +73,7 @@ class PlaceholderFragment : BaseFragment(R.layout.fragment_other_order) { ...@@ -86,6 +73,7 @@ class PlaceholderFragment : BaseFragment(R.layout.fragment_other_order) {
} }
// 初始化recyclerview // 初始化recyclerview
initRecyclerView() initRecyclerView()
//初始化下拉刷新
initRefresh() initRefresh()
} }
...@@ -100,19 +88,19 @@ class PlaceholderFragment : BaseFragment(R.layout.fragment_other_order) { ...@@ -100,19 +88,19 @@ class PlaceholderFragment : BaseFragment(R.layout.fragment_other_order) {
} }
refresh_layout.setOnLoadMoreListener { refresh_layout.setOnLoadMoreListener {
page++ page++
getOrderList(true) getOrderList()
} }
} }
private fun initRecyclerView() { private fun initRecyclerView() {
rv_other_order.layoutManager = LinearLayoutManager(activity) rv_other_order.layoutManager = LinearLayoutManager(activity)
adapter = OtherOrdersAdapter(requireActivity(), pageViewModel.timeOut * 60 * 1000) adapter = OrderListAdapter(requireActivity(), pageViewModel.timeOut * 60 * 1000)
adapter.setOnItemClickListenter { data -> adapter.setOnItemClickListener { data ->
// 點擊查詢食品詳情 // 點擊查詢食品詳情
val intent = Intent(activity, OrderDetailsActivity::class.java) val intent = Intent(activity, OrderDetailsActivity::class.java)
intent.putExtra("orderId", data.Id.toString()) intent.putExtra("orderId", data.id.toString())
intent.putExtra("orderType", data.order_type) intent.putExtra("orderType", data.orderType)
intent.putExtra("orderStatus", data.STATUS) intent.putExtra("orderStatus", data.status)
intent.putExtra("orderPayType", data.orderPayType) intent.putExtra("orderPayType", data.orderPayType)
intent.putExtra("isRead", data.isRead) intent.putExtra("isRead", data.isRead)
//傳遞是否是預約單 //傳遞是否是預約單
...@@ -122,9 +110,8 @@ class PlaceholderFragment : BaseFragment(R.layout.fragment_other_order) { ...@@ -122,9 +110,8 @@ class PlaceholderFragment : BaseFragment(R.layout.fragment_other_order) {
intent.putExtra("isBookingOrder", true) intent.putExtra("isBookingOrder", true)
} }
} }
//已指派物流 並且 狀態為未接單 才判斷是否超時 //已指派物流 並且 狀態為未接單 才判斷是否超時
if (data.isDelete == 0 && data.curStat < 2) { if (data.isDelete == 0 && data.curStatNumber < 2) {
if (pageViewModel.timeOut == 0) { if (pageViewModel.timeOut == 0) {
//為0時沒配置,不顯示追加服務費按鈕 //為0時沒配置,不顯示追加服務費按鈕
intent.putExtra("isTimeOut", false) intent.putExtra("isTimeOut", false)
...@@ -139,18 +126,14 @@ class PlaceholderFragment : BaseFragment(R.layout.fragment_other_order) { ...@@ -139,18 +126,14 @@ class PlaceholderFragment : BaseFragment(R.layout.fragment_other_order) {
private fun refresh() { private fun refresh() {
if (position == pageViewModel.refreshState.value) { pageViewModel.showLoading.postValue(true)
showLoading("獲取數據中...")
page = 1 page = 1
pageViewModel.orderNo = ""
pageViewModel.phone = "" pageViewModel.phone = ""
getOrderList(false) getOrderList()
}
} }
private fun getOrderList(isLoadMore: Boolean) { private fun getOrderList() {
pageViewModel.getOrderList(arguments?.getInt(INDEX) pageViewModel.getNewOrderList(page, PageViewModel.fragmentStatus[position], PageViewModel.fragmentType[position])
?: 0, page.toString(), isLoadMore)
} }
companion object { companion object {
......
...@@ -9,7 +9,7 @@ ...@@ -9,7 +9,7 @@
<variable <variable
name="data" name="data"
type="com.gingersoft.gsa.delivery_pick_mode.model.viewModel.PageViewModel" /> type="com.gingersoft.gsa.delivery_pick_mode.data.model.bean.RestaurantBusinessInfo" />
</data> </data>
<androidx.coordinatorlayout.widget.CoordinatorLayout <androidx.coordinatorlayout.widget.CoordinatorLayout
...@@ -71,6 +71,7 @@ ...@@ -71,6 +71,7 @@
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="@dimen/dp_5" android:layout_height="@dimen/dp_5"
android:layout_marginRight="@dimen/dp_5" android:layout_marginRight="@dimen/dp_5"
android:progress="@{data.takeawayOrderNumber}"
android:progressDrawable="@drawable/shape_seekbar_bg" android:progressDrawable="@drawable/shape_seekbar_bg"
app:layout_constraintCircleRadius="@dimen/dp_5" app:layout_constraintCircleRadius="@dimen/dp_5"
app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintLeft_toLeftOf="parent"
...@@ -96,7 +97,7 @@ ...@@ -96,7 +97,7 @@
android:id="@+id/tv_month_takeaway_num" android:id="@+id/tv_month_takeaway_num"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="@{String.valueOf(data.otherInfo.num + @string/slash + data.otherInfo.maxOrder)}" android:text="@{String.valueOf(data.takeawayOrderNumber + @string/slash + data.maxOrderTakeaway)}"
android:textColor="@color/color_a9" android:textColor="@color/color_a9"
android:textSize="@dimen/dp_12" android:textSize="@dimen/dp_12"
app:layout_constraintRight_toRightOf="@id/sb_takeaway" app:layout_constraintRight_toRightOf="@id/sb_takeaway"
...@@ -118,6 +119,8 @@ ...@@ -118,6 +119,8 @@
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="@dimen/dp_5" android:layout_height="@dimen/dp_5"
android:layout_marginLeft="@dimen/dp_5" android:layout_marginLeft="@dimen/dp_5"
android:max="@{data.maxOrderSelf}"
android:progress="@{data.selfCollectionOrderNumber}"
android:progressDrawable="@drawable/shape_seekbar_bg" android:progressDrawable="@drawable/shape_seekbar_bg"
app:layout_constraintCircleRadius="@dimen/dp_5" app:layout_constraintCircleRadius="@dimen/dp_5"
app:layout_constraintLeft_toRightOf="@id/dividing_line" app:layout_constraintLeft_toRightOf="@id/dividing_line"
...@@ -142,7 +145,7 @@ ...@@ -142,7 +145,7 @@
android:id="@+id/tv_month_self_num" android:id="@+id/tv_month_self_num"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="@{String.valueOf(data.otherInfo.selflNum + @string/slash +data.otherInfo.maxOrderSelf)}" android:text="@{String.valueOf(data.selfCollectionOrderNumber + @string/slash +data.maxOrderSelf)}"
android:textColor="@color/color_a9" android:textColor="@color/color_a9"
android:textSize="@dimen/dp_12" android:textSize="@dimen/dp_12"
app:layout_constraintRight_toRightOf="@id/sb_self" app:layout_constraintRight_toRightOf="@id/sb_self"
...@@ -261,7 +264,7 @@ ...@@ -261,7 +264,7 @@
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_5" android:layout_marginTop="@dimen/dp_5"
android:text="@{String.valueOf(data.otherInfo.dayOrderNum)}" android:text="@{String.valueOf(data.sumOrderNumber)}"
android:textColor="@color/theme_333_color" android:textColor="@color/theme_333_color"
android:textSize="@dimen/dp_16" android:textSize="@dimen/dp_16"
android:textStyle="bold" android:textStyle="bold"
...@@ -307,7 +310,7 @@ ...@@ -307,7 +310,7 @@
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginBottom="@dimen/dp_10" android:layout_marginBottom="@dimen/dp_10"
android:text="" android:text="@{String.valueOf(data.takeoutType.dayOrderNumber)}"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toLeftOf="@id/line_today_order_info" app:layout_constraintRight_toLeftOf="@id/line_today_order_info"
...@@ -329,7 +332,7 @@ ...@@ -329,7 +332,7 @@
style="@style/otherOrderInfoDialogTextStyle_font_style_twelve" style="@style/otherOrderInfoDialogTextStyle_font_style_twelve"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="" android:text="@{String.valueOf(data.selfCollectionType.dayOrderNumber)}"
app:layout_constraintLeft_toRightOf="@id/line_today_order_info" app:layout_constraintLeft_toRightOf="@id/line_today_order_info"
app:layout_constraintRight_toRightOf="@id/line_today_info" app:layout_constraintRight_toRightOf="@id/line_today_info"
app:layout_constraintTop_toBottomOf="@id/tv_self_text" /> app:layout_constraintTop_toBottomOf="@id/tv_self_text" />
...@@ -360,7 +363,7 @@ ...@@ -360,7 +363,7 @@
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_5" android:layout_marginTop="@dimen/dp_5"
android:text="@{@string/amount_unit + data.otherInfo.totalAmount}" android:text="@{@string/amount_unit + data.sumTotalAmount}"
android:textColor="@color/theme_333_color" android:textColor="@color/theme_333_color"
android:textSize="@dimen/dp_16" android:textSize="@dimen/dp_16"
android:textStyle="bold" android:textStyle="bold"
...@@ -396,6 +399,7 @@ ...@@ -396,6 +399,7 @@
style="@style/otherOrderInfoDialogTextStyle_font_style_twelve" style="@style/otherOrderInfoDialogTextStyle_font_style_twelve"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="@{@string/amount_unit + data.takeoutType.totalAmount}"
app:layout_constraintLeft_toLeftOf="@id/tv_takeaway_amount_text" app:layout_constraintLeft_toLeftOf="@id/tv_takeaway_amount_text"
app:layout_constraintRight_toRightOf="@id/tv_takeaway_amount_text" app:layout_constraintRight_toRightOf="@id/tv_takeaway_amount_text"
app:layout_constraintTop_toBottomOf="@id/tv_takeaway_amount_text" /> app:layout_constraintTop_toBottomOf="@id/tv_takeaway_amount_text" />
...@@ -416,7 +420,7 @@ ...@@ -416,7 +420,7 @@
style="@style/otherOrderInfoDialogTextStyle_font_style_twelve" style="@style/otherOrderInfoDialogTextStyle_font_style_twelve"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="" android:text="@{@string/amount_unit + data.selfCollectionType.totalAmount}"
app:layout_constraintLeft_toLeftOf="@id/tv_self_amount_text" app:layout_constraintLeft_toLeftOf="@id/tv_self_amount_text"
app:layout_constraintRight_toRightOf="@id/tv_self_amount_text" app:layout_constraintRight_toRightOf="@id/tv_self_amount_text"
app:layout_constraintTop_toBottomOf="@id/tv_self_amount_text" /> app:layout_constraintTop_toBottomOf="@id/tv_self_amount_text" />
......
...@@ -11,7 +11,7 @@ ...@@ -11,7 +11,7 @@
<variable <variable
name="data" name="data"
type="com.gingersoft.gsa.delivery_pick_mode.data.model.bean.OrderList.DataBeanX.DataBean" /> type="com.gingersoft.gsa.delivery_pick_mode.data.model.bean.OrderListBean" />
<variable <variable
name="delivery_state" name="delivery_state"
...@@ -128,7 +128,7 @@ ...@@ -128,7 +128,7 @@
android:layout_marginRight="@dimen/dp_10" android:layout_marginRight="@dimen/dp_10"
android:layout_weight="1" android:layout_weight="1"
android:gravity="right" android:gravity="right"
android:text="@{TimeUtils.parseTimeRepeat(data.cREATE_TIME,TimeUtils.DEFAULT_DATE_FORMAT)}" android:text="@{TimeUtils.parseTimeRepeat(data.createTime,TimeUtils.DEFAULT_DATE_FORMAT)}"
android:textSize="@dimen/dp_10" android:textSize="@dimen/dp_10"
tools:text="下單時間" tools:text="下單時間"
tools:textColor="@color/theme_333_color" /> tools:textColor="@color/theme_333_color" />
...@@ -151,7 +151,7 @@ ...@@ -151,7 +151,7 @@
android:layout_height="match_parent" android:layout_height="match_parent"
android:layout_marginTop="@dimen/dp_2" android:layout_marginTop="@dimen/dp_2"
android:layout_marginRight="@dimen/dp_10" android:layout_marginRight="@dimen/dp_10"
android:text="@{data.rECEIVER + @string/left_parenthesis+data.pHONE + @string/right_parenthesis}" android:text="@{data.receiver + @string/left_parenthesis+data.phone + @string/right_parenthesis}"
android:textColor="@color/theme_text_color" android:textColor="@color/theme_text_color"
android:textSize="@dimen/sp_14" android:textSize="@dimen/sp_14"
android:textStyle="bold" android:textStyle="bold"
...@@ -230,7 +230,7 @@ ...@@ -230,7 +230,7 @@
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_6" android:layout_marginTop="@dimen/dp_6"
android:text="@{data.aDDRESS_DETAIL}" android:text="@{data.addressDetail}"
android:visibility="@{isSelf?View.GONE:View.VISIBLE}" android:visibility="@{isSelf?View.GONE:View.VISIBLE}"
app:layout_constraintLeft_toRightOf="@id/barrier_order_item_right" app:layout_constraintLeft_toRightOf="@id/barrier_order_item_right"
app:layout_constraintRight_toRightOf="parent" app:layout_constraintRight_toRightOf="parent"
...@@ -299,7 +299,7 @@ ...@@ -299,7 +299,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_2" android:layout_marginTop="@dimen/dp_2"
android:gravity="center_horizontal" android:gravity="center_horizontal"
android:text="@{@string/amount_unit + data.pAY_AMOUNT}" android:text="@{@string/amount_unit + data.payAmount}"
android:textColor="@color/red_600" android:textColor="@color/red_600"
android:textSize="@dimen/sp_16" android:textSize="@dimen/sp_16"
app:layout_constraintHorizontal_weight="1" app:layout_constraintHorizontal_weight="1"
...@@ -325,11 +325,11 @@ ...@@ -325,11 +325,11 @@
<TextView <TextView
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginRight="@dimen/dp_2"
android:gravity="center_horizontal" android:gravity="center_horizontal"
android:text="@{@string/amount_unit + data.paymentValue}" android:text="@{@string/amount_unit + data.paymentValue}"
android:textColor="@color/red_600" android:textColor="@color/red_600"
android:textSize="@dimen/sp_10" android:textSize="@dimen/sp_10"
android:layout_marginRight="@dimen/dp_2"
app:layout_constraintHorizontal_weight="1" app:layout_constraintHorizontal_weight="1"
app:layout_constraintLeft_toRightOf="@id/tv_address" app:layout_constraintLeft_toRightOf="@id/tv_address"
app:layout_constraintRight_toRightOf="parent" app:layout_constraintRight_toRightOf="parent"
......
...@@ -15,4 +15,5 @@ ...@@ -15,4 +15,5 @@
<string name="delivery_shop">本店派送</string> <string name="delivery_shop">本店派送</string>
<string name="logistics_distribution">物流配送</string> <string name="logistics_distribution">物流配送</string>
<string name="str_reservation_time">"預約單(%1$d分)"</string>
</resources> </resources>
...@@ -24,15 +24,15 @@ ...@@ -24,15 +24,15 @@
android:name="com.yalantis.ucrop.UCropActivity" android:name="com.yalantis.ucrop.UCropActivity"
android:screenOrientation="portrait" android:screenOrientation="portrait"
android:theme="@style/Theme.AppCompat.Light.NoActionBar" /> android:theme="@style/Theme.AppCompat.Light.NoActionBar" />
<provider <!-- <provider-->
android:name="androidx.core.content.FileProvider" <!-- android:name="androidx.core.content.FileProvider"-->
android:authorities="${applicationId}.fileprovider" <!-- android:authorities="${applicationId}.fileprovider"-->
android:exported="false" <!-- android:exported="false"-->
android:grantUriPermissions="true"> <!-- android:grantUriPermissions="true">-->
<meta-data <!-- <meta-data-->
android:name="android.support.FILE_PROVIDER_PATHS" <!-- android:name="android.support.FILE_PROVIDER_PATHS"-->
android:resource="@xml/gsa_purchase_paths" /> <!-- android:resource="@xml/gsa_purchase_paths" />-->
</provider> <!-- </provider>-->
</application> </application>
</manifest> </manifest>
\ No newline at end of file
...@@ -17,4 +17,5 @@ public class ConsumeWareHousingBean { ...@@ -17,4 +17,5 @@ public class ConsumeWareHousingBean {
private String dates; private String dates;
private String description; private String description;
private int quantity; private int quantity;
private String supplierName;
} }
...@@ -14,5 +14,8 @@ public class InventoryRecordBean { ...@@ -14,5 +14,8 @@ public class InventoryRecordBean {
private String userName; private String userName;
private int uid; private int uid;
private int consumeQuantity;
private int remainingQuantity;
private long createTime;
} }
...@@ -67,6 +67,7 @@ public class WarehouseDetailsBean { ...@@ -67,6 +67,7 @@ public class WarehouseDetailsBean {
warehousingBean.purchase = consumeWareHousingBean.getDescription(); warehousingBean.purchase = consumeWareHousingBean.getDescription();
warehousingBean.foodQuantity = consumeWareHousingBean.getQuantity(); warehousingBean.foodQuantity = consumeWareHousingBean.getQuantity();
warehousingBean.purchaseTime = consumeWareHousingBean.getDates(); warehousingBean.purchaseTime = consumeWareHousingBean.getDates();
warehousingBean.supplierName = consumeWareHousingBean.getSupplierName();
return warehousingBean; return warehousingBean;
} }
......
...@@ -104,15 +104,15 @@ public class NewFoodIngredientsPresenter extends BasePresenter<NewFoodIngredient ...@@ -104,15 +104,15 @@ public class NewFoodIngredientsPresenter extends BasePresenter<NewFoodIngredient
/** /**
* 食材單價下標 * 食材單價下標
*/ */
public int foodIngredientPriceIndex = 11; public int foodIngredientPriceIndex = 12;
/** /**
* 是否審核 下標 * 是否審核 下標
*/ */
public int isAuditIndex = 14; public int isAuditIndex = 15;
public int mixInventoryIndex = 15;//最低庫存 public int mixInventoryIndex = 16;//最低庫存
public int shelfLifeIndex = 16;//保質期 public int shelfLifeIndex = 17;//保質期
public int shelfLifeWarningIndex = 17;//保質期預警 public int shelfLifeWarningIndex = 18;//保質期預警
public int remarkIndex = 20;//備註 public int remarkIndex = 21;//備註
/** /**
* 副單位集合 * 副單位集合
*/ */
...@@ -210,10 +210,11 @@ public class NewFoodIngredientsPresenter extends BasePresenter<NewFoodIngredient ...@@ -210,10 +210,11 @@ public class NewFoodIngredientsPresenter extends BasePresenter<NewFoodIngredient
infoMultiBeans.add(new MultiSelectBean(InfoMultiBean.EDIT_FOOD_ITEM_SELECT, "基本單位", true, "請選擇食材單位", SELECT_PACKAGE_SPECIFICATION_REQUEST_CODE, FoodUnitPageFragment.class)); infoMultiBeans.add(new MultiSelectBean(InfoMultiBean.EDIT_FOOD_ITEM_SELECT, "基本單位", true, "請選擇食材單位", SELECT_PACKAGE_SPECIFICATION_REQUEST_CODE, FoodUnitPageFragment.class));
infoMultiBeans.add(new MultiInputBean(InfoMultiBean.ITEM_TYPE_INPUT, "包裝說明", false, "請輸入包裝說明", new InputFilter[]{InputFilterUtils.getLengthFilter(context, 10), InputFilterUtils.getTypeFilter(context, InputFilterUtils.chAndEnAndNumAndSlash)})); infoMultiBeans.add(new MultiInputBean(InfoMultiBean.ITEM_TYPE_INPUT, "包裝說明", false, "請輸入包裝說明", new InputFilter[]{InputFilterUtils.getLengthFilter(context, 10), InputFilterUtils.getTypeFilter(context, InputFilterUtils.chAndEnAndNumAndSlash)}));
infoMultiBeans.add(new MultiInputBean(InfoMultiBean.ITEM_TYPE_INPUT, "食材編號", false, "請輸入食材編號", new InputFilter[]{InputFilterUtils.getLengthFilter(context, 11), InputFilterUtils.getEnAndNumInputFilter(context)})); infoMultiBeans.add(new MultiInputBean(InfoMultiBean.ITEM_TYPE_INPUT, "食材編號", false, "請輸入食材編號", new InputFilter[]{InputFilterUtils.getLengthFilter(context, 11), InputFilterUtils.getEnAndNumInputFilter(context)}));
infoMultiBeans.add(new InfoMultiBean(InfoMultiBean.ITEM_MULTIPLE_BOOLEAN, "是否有SN碼", false, false));
infoMultiBeans.add(new MultiInputBean(InfoMultiBean.ITEM_TYPE_INPUT, "單價($)", false, "請輸入單價,保留2位小數", new InputFilter[]{InputFilterUtils.getLengthFilter(context, 9), new DecimalDigitsInputFilter(context, 2)}, InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_DECIMAL)); infoMultiBeans.add(new MultiInputBean(InfoMultiBean.ITEM_TYPE_INPUT, "單價($)", false, "請輸入單價,保留2位小數", new InputFilter[]{InputFilterUtils.getLengthFilter(context, 9), new DecimalDigitsInputFilter(context, 2)}, InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_DECIMAL));
infoMultiBeans.add(new InfoMultiBean(InfoMultiBean.ITEM_TYPE_LINE)); infoMultiBeans.add(new InfoMultiBean(InfoMultiBean.ITEM_TYPE_LINE));
infoMultiBeans.add(new InfoMultiBean(InfoMultiBean.ITEM_TYPE_TITLE, "庫存預警")); infoMultiBeans.add(new InfoMultiBean(InfoMultiBean.ITEM_TYPE_TITLE, "庫存預警"));
infoMultiBeans.add(new InfoMultiBean(InfoMultiBean.ITEM_MULTIPLE_BOOLEAN, "是否審核", false, "請輸入單位")); infoMultiBeans.add(new InfoMultiBean(InfoMultiBean.ITEM_MULTIPLE_BOOLEAN, "是否審核", false, ""));
infoMultiBeans.add(new MultiInputBean(InfoMultiBean.ITEM_TYPE_INPUT, "最低庫存", false, "請輸入最低庫存", new InputFilter[]{InputFilterUtils.getLengthFilter(context, 5)}, EditorInfo.TYPE_CLASS_NUMBER)); infoMultiBeans.add(new MultiInputBean(InfoMultiBean.ITEM_TYPE_INPUT, "最低庫存", false, "請輸入最低庫存", new InputFilter[]{InputFilterUtils.getLengthFilter(context, 5)}, EditorInfo.TYPE_CLASS_NUMBER));
infoMultiBeans.add(new MultiInputBean(InfoMultiBean.ITEM_TYPE_INPUT, "保質期(天)", false, "請輸入保質期", new InputFilter[]{InputFilterUtils.getLengthFilter(context, 5)}, EditorInfo.TYPE_CLASS_NUMBER)); infoMultiBeans.add(new MultiInputBean(InfoMultiBean.ITEM_TYPE_INPUT, "保質期(天)", false, "請輸入保質期", new InputFilter[]{InputFilterUtils.getLengthFilter(context, 5)}, EditorInfo.TYPE_CLASS_NUMBER));
infoMultiBeans.add(new MultiInputBean(InfoMultiBean.ITEM_TYPE_INPUT, "保質期預警(天)", false, "請輸入預警天數", new InputFilter[]{InputFilterUtils.getLengthFilter(context, 5)}, EditorInfo.TYPE_CLASS_NUMBER)); infoMultiBeans.add(new MultiInputBean(InfoMultiBean.ITEM_TYPE_INPUT, "保質期預警(天)", false, "請輸入預警天數", new InputFilter[]{InputFilterUtils.getLengthFilter(context, 5)}, EditorInfo.TYPE_CLASS_NUMBER));
......
...@@ -113,8 +113,8 @@ public class FunctionListFragment extends BaseSupplyChainFragment<FunctionListPr ...@@ -113,8 +113,8 @@ public class FunctionListFragment extends BaseSupplyChainFragment<FunctionListPr
start(SupplierListFragment.newInstance(false, null)); start(SupplierListFragment.newInstance(false, null));
break; break;
case "食材": case "食材":
// start(FoodIngredientsFragment.newInstance(FOOD_INGREDIENTS)); start(FoodIngredientsFragment.newInstance(FOOD_INGREDIENTS));
start(BuyIngredientsFragment.newInstance()); // start(BuyIngredientsFragment.newInstance());
break; break;
case "種類": case "種類":
start(CategoryFragment.newInstance()); start(CategoryFragment.newInstance());
......
...@@ -36,25 +36,7 @@ ...@@ -36,25 +36,7 @@
<!--path="images" />--> <!--path="images" />-->
<paths xmlns:android="http://schemas.android.com/apk/res/android"> <paths xmlns:android="http://schemas.android.com/apk/res/android">
<root-path
name="root"
path="" />
<files-path
name="files"
path="images" />
<cache-path
name="cache"
path="" />
<external-path <external-path
name="external" name=""
path="image" /> path="purchase_image" />
<external-files-path
name="external_file_path"
path="" />
<external-cache-path
name="external_cache_path"
path="" />
</paths> </paths>
package com.gingersoft.gsa.cloud.common.bean; package com.gingersoft.gsa.cloud.common.bean;
import lombok.Data;
/** /**
* Created by Wyh on 2020/1/15. * Created by Wyh on 2020/1/15.
*/ */
@Data
public class BaseResult { public class BaseResult {
/** /**
...@@ -27,4 +24,36 @@ public class BaseResult { ...@@ -27,4 +24,36 @@ public class BaseResult {
public void setSuccess(boolean success) { public void setSuccess(boolean success) {
this.success = success; this.success = success;
} }
public Object getData() {
return data;
}
public void setData(Object data) {
this.data = data;
}
public long getSysTime() {
return sysTime;
}
public void setSysTime(long sysTime) {
this.sysTime = sysTime;
}
public String getErrCode() {
return errCode;
}
public void setErrCode(String errCode) {
this.errCode = errCode;
}
public String getErrMsg() {
return errMsg;
}
public void setErrMsg(String errMsg) {
this.errMsg = errMsg;
}
} }
...@@ -2,6 +2,7 @@ package com.gingersoft.gsa.cloud.common.core.delivery ...@@ -2,6 +2,7 @@ package com.gingersoft.gsa.cloud.common.core.delivery
import android.util.Log import android.util.Log
import android.view.View import android.view.View
import com.gingersoft.gsa.cloud.common.logan.LoganManager
import com.gingersoft.gsa.cloud.common.utils.MoneyUtil import com.gingersoft.gsa.cloud.common.utils.MoneyUtil
import com.gingersoft.gsa.cloud.common.utils.other.TextUtil import com.gingersoft.gsa.cloud.common.utils.other.TextUtil
import java.io.Serializable import java.io.Serializable
...@@ -333,6 +334,7 @@ class OrderDetails { ...@@ -333,6 +334,7 @@ class OrderDetails {
var differenceAmount = MoneyUtil.sub(MoneyUtil.sub(totalAmount, foodAmount), allowableError) var differenceAmount = MoneyUtil.sub(MoneyUtil.sub(totalAmount, foodAmount), allowableError)
differenceAmount = abs(differenceAmount) differenceAmount = abs(differenceAmount)
if (MoneyUtil.compareTo(differenceAmount, allowableError) == 1) { if (MoneyUtil.compareTo(differenceAmount, allowableError) == 1) {
LoganManager.w_delivery(LoganManager.EVENT_CALCULATE, "verificationAmount食品金額:${totalAmount} + ${foodAmount}");
return true return true
} }
var payAmount = foodAmount var payAmount = foodAmount
...@@ -347,6 +349,7 @@ class OrderDetails { ...@@ -347,6 +349,7 @@ class OrderDetails {
differenceAmount = MoneyUtil.sub(MoneyUtil.sub(payAmount, orderDetail.PAY_AMOUNT), allowableError) differenceAmount = MoneyUtil.sub(MoneyUtil.sub(payAmount, orderDetail.PAY_AMOUNT), allowableError)
differenceAmount = abs(differenceAmount) differenceAmount = abs(differenceAmount)
if (MoneyUtil.compareTo(differenceAmount, allowableError) == 1) { if (MoneyUtil.compareTo(differenceAmount, allowableError) == 1) {
LoganManager.w_delivery(LoganManager.EVENT_CALCULATE, "verificationAmount支付金額:${payAmount} + ${orderDetail.PAY_AMOUNT}");
return true return true
} }
return false return false
......
package com.gingersoft.gsa.cloud.common.function.click;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
* @author 宇航.
* User: admin
* Date: 2021/3/3
* Time: 11:44
* Use:
*/
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface SingleClick {
long value() default 1000;
}
//package com.gingersoft.gsa.cloud.common.function.click;
//
//import android.util.Log;
//import android.view.View;
//
//import org.aspectj.lang.ProceedingJoinPoint;
//import org.aspectj.lang.annotation.Around;
//import org.aspectj.lang.annotation.Aspect;
//import org.aspectj.lang.annotation.Pointcut;
//import org.aspectj.lang.reflect.MethodSignature;
//
//import java.lang.reflect.Method;
//
///**
// * @author 宇航.
// * User: admin
// * Date: 2021/3/3
// * Time: 11:46
// * Use:
// */
//@Aspect
//public class SingleClickAspect {
// private static final long DEFAULT_TIME_INTERVAL = 5000;
// /**
// * 定义切点,标记切点为所有被@SingleClick注解的方法
// 注意:这里me.baron.test.annotation.SingleClick需要替换成
// * 你自己项目中SingleClick这个类的全路径哦
// */
// @Pointcut("execution(@com.gingersoft.gsa.cloud.common.function.click.SingleClick * *(..))")
// public void methodAnnotated() {}
//
// /**
// * 定义一个切面方法,包裹切点方法
// */
// @Around("methodAnnotated()")
// public void aroundJoinPoint(ProceedingJoinPoint joinPoint) throws Throwable {
// // 取出方法的参数
//// View view = null;
//// for (Object arg : joinPoint.getArgs()) {
//// if (arg instanceof View) {
//// view = (View) arg;
//// break;
//// }
//// }
//// if (view == null) {
//// return;
//// }
// // 取出方法的注解
// MethodSignature methodSignature = (MethodSignature) joinPoint.getSignature();
// Method method = methodSignature.getMethod();
// Log.e("eee", "aroundJoinPoint");
// if (!method.isAnnotationPresent(SingleClick.class)) {
// Log.e("eee", "isAnnotationPresent");
// return;
// }
// SingleClick singleClick = method.getAnnotation(SingleClick.class);
// // 判断是否快速点击
// if (!isFastDoubleClick(method.getName(), singleClick.value())) {
// Log.e("eee", "不是快速點擊");
// // 不是快速点击,执行原方法
// joinPoint.proceed();
// } else {
// Log.e("eee", "快速點擊");
// }
// }
//
// /**
// * 最近一次点击的时间
// */
// private static long mLastClickTime;
// /**
// * 最近一次点击的方法
// */
// private static String mLastMethodName;
//
// /**
// * 是否是快速点击
// * @param intervalMillis 时间间期(毫秒)
// * @return true:是,false:不是
// */
// public static boolean isFastDoubleClick(String methodName, long intervalMillis) {
// long time = System.currentTimeMillis();
// long timeInterval = Math.abs(time - mLastClickTime);
// if (timeInterval < intervalMillis && methodName.equals(mLastMethodName)) {
// return true;
// } else {
// mLastClickTime = time;
// mLastMethodName = methodName;
// return false;
// }
// }
//}
...@@ -91,6 +91,8 @@ public class LoganManager { ...@@ -91,6 +91,8 @@ public class LoganManager {
public static final String EVENT_DELETE = "刪除->"; public static final String EVENT_DELETE = "刪除->";
public static final String EVENT_MODIFY = "修改->"; public static final String EVENT_MODIFY = "修改->";
public static final String EVENT_QUERY = "查詢->"; public static final String EVENT_QUERY = "查詢->";
public static final String EVENT_ERROR = "錯誤->";
public static void w_login(String TAG,String... eventAndLog) { public static void w_login(String TAG,String... eventAndLog) {
w_business(LOGIN_BUSINESS_TAG, TAG, eventAndLog); w_business(LOGIN_BUSINESS_TAG, TAG, eventAndLog);
......
...@@ -54,7 +54,7 @@ class DataNotificationService : Service() { ...@@ -54,7 +54,7 @@ class DataNotificationService : Service() {
var client: OkHttpClient? = null var client: OkHttpClient? = null
var postCallBack: PostCallBack? = null var postCallBack: PostCallBack? = null
private lateinit var mReceiver: ClearHeartBroadcastReceiver private var mReceiver: ClearHeartBroadcastReceiver? = null
private var newWakeLock: PowerManager.WakeLock? = null private var newWakeLock: PowerManager.WakeLock? = null
...@@ -163,13 +163,9 @@ class DataNotificationService : Service() { ...@@ -163,13 +163,9 @@ class DataNotificationService : Service() {
* 创建通知渠道 * 创建通知渠道
*/ */
@RequiresApi(Build.VERSION_CODES.O) @RequiresApi(Build.VERSION_CODES.O)
fun createNotificationChannel(notifiyId: Int) { fun createNotificationChannel(notifyId: Int) {
if (!UserContext.newInstance().isLogin) {
stopSelf()
return
}
//设定的通知渠道名称 //设定的通知渠道名称
var channelName = "Data Notification" val channelName = "Data Notification"
//设置通知的重要程度 //设置通知的重要程度
val importance = NotificationManager.IMPORTANCE_LOW val importance = NotificationManager.IMPORTANCE_LOW
//构建通知渠道 //构建通知渠道
...@@ -179,7 +175,7 @@ class DataNotificationService : Service() { ...@@ -179,7 +175,7 @@ class DataNotificationService : Service() {
val notificationManager = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager val notificationManager = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
notificationManager.createNotificationChannel(channel) notificationManager.createNotificationChannel(channel)
notificationManager.cancelAll() notificationManager.cancelAll()
startNotification(notifiyId) startNotification(notifyId)
} }
private fun startNotification(notifiyId: Int) { private fun startNotification(notifiyId: Int) {
...@@ -201,7 +197,7 @@ class DataNotificationService : Service() { ...@@ -201,7 +197,7 @@ class DataNotificationService : Service() {
builder.setContentTitle("Ricepon POS")//设置通知标题 builder.setContentTitle("Ricepon POS")//设置通知标题
builder.setContentText("connection service")//设置通知内容 builder.setContentText("connection service")//设置通知内容
var pendingIntent: PendingIntent val pendingIntent: PendingIntent
if (notifiyId == DELIVETY_NOTIFITY_ID) { if (notifiyId == DELIVETY_NOTIFITY_ID) {
var intent: Intent? = null var intent: Intent? = null
myBind?.jumpActivity?.let { myBind?.jumpActivity?.let {
...@@ -219,6 +215,10 @@ class DataNotificationService : Service() { ...@@ -219,6 +215,10 @@ class DataNotificationService : Service() {
builder.setLargeIcon(BitmapFactory.decodeResource(resources, R.mipmap.ic_launcher)) builder.setLargeIcon(BitmapFactory.decodeResource(resources, R.mipmap.ic_launcher))
//将服务置于启动状态 NOTIFICATION_ID指的是创建的通知的ID //将服务置于启动状态 NOTIFICATION_ID指的是创建的通知的ID
startForeground(notifiyId, builder.build()) startForeground(notifiyId, builder.build())
if (!UserContext.newInstance().isLogin) {
stopSelf()
return
}
} }
fun restartNotification() { fun restartNotification() {
...@@ -416,13 +416,19 @@ class DataNotificationService : Service() { ...@@ -416,13 +416,19 @@ class DataNotificationService : Service() {
override fun onDestroy() { override fun onDestroy() {
super.onDestroy() super.onDestroy()
putTimeLog("服務銷毀onDestroy") clearTask()
}
private fun clearTask() {
putTimeLog("服務銷毀onDestroy")
//清除心跳 //清除心跳
clearHeart() clearHeart()
isDestroy = true isDestroy = true
//取消廣播 //取消廣播
mReceiver?.let {
unregisterReceiver(mReceiver) unregisterReceiver(mReceiver)
mReceiver = null
}
//斷開長鏈接 //斷開長鏈接
client?.let { client?.let {
mWebSocket?.cancel() mWebSocket?.cancel()
......
...@@ -5,8 +5,8 @@ ...@@ -5,8 +5,8 @@
android:width="@dimen/dp_19" android:width="@dimen/dp_19"
android:height="@dimen/dp_19" /> android:height="@dimen/dp_19" />
<stroke <stroke
android:width="3dp" android:width="1dp"
android:color="#00000000" /> android:color="@color/color_3c" />
<solid android:color="@color/white" /> <solid android:color="@color/white" />
</shape> </shape>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" <shape xmlns:android="http://schemas.android.com/apk/res/android">
android:shape="rectangle">
<corners android:radius="20dp" /> <corners android:radius="@dimen/dp_20" />
<solid android:color="@color/theme_color" /> <solid android:color="@color/theme_color" />
......
...@@ -153,7 +153,6 @@ ...@@ -153,7 +153,6 @@
<string name="response_error_request_logged">賬號已在其他設備登錄</string> <string name="response_error_request_logged">賬號已在其他設備登錄</string>
<string name="app_exception">很抱歉,程序出現異常,即將退出!</string> <string name="app_exception">很抱歉,程序出現異常,即將退出!</string>
<string name="queue_write_external_storage_permission_hint">保存失敗,請先前往設置開放存儲權限</string> <string name="queue_write_external_storage_permission_hint">保存失敗,請先前往設置開放存儲權限</string>
...@@ -221,4 +220,7 @@ ...@@ -221,4 +220,7 @@
<string name="delivery_fee">最低消費:</string> <string name="delivery_fee">最低消費:</string>
<string name="delivery_method">配送方式:</string> <string name="delivery_method">配送方式:</string>
<string name="delivery_difference">補差價:</string> <string name="delivery_difference">補差價:</string>
<string name="str_amount_tran">$%1$.2f</string>
<string name="str_amount_tran_integer">$%1$d</string>
</resources> </resources>
...@@ -104,7 +104,8 @@ public class InfoMultiBean { ...@@ -104,7 +104,8 @@ public class InfoMultiBean {
protected Class<? extends ISupportFragment> fragment; protected Class<? extends ISupportFragment> fragment;
public InfoMultiBean(){} public InfoMultiBean() {
}
public InfoMultiBean(int itemType) { public InfoMultiBean(int itemType) {
this.itemType = itemType; this.itemType = itemType;
...@@ -130,6 +131,13 @@ public class InfoMultiBean { ...@@ -130,6 +131,13 @@ public class InfoMultiBean {
this.hintText = hintText; this.hintText = hintText;
} }
public InfoMultiBean(int itemType, String showTitle, boolean isRequired, boolean isChecked) {
this.itemType = itemType;
this.showTitle = showTitle;
this.isRequired = isRequired;
this.isChecked = isChecked;
}
public InfoMultiBean(int itemType, String showTitle, String hintText, Class<? extends ISupportFragment> supportFragment) { public InfoMultiBean(int itemType, String showTitle, String hintText, Class<? extends ISupportFragment> supportFragment) {
this.itemType = itemType; this.itemType = itemType;
this.showTitle = showTitle; this.showTitle = showTitle;
......
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