From 1f587d2d93616cbd6677d0ec77642f7f2f7f89f3 Mon Sep 17 00:00:00 2001 From: jjLv <1981429112@qq.com> Date: Tue, 10 Jun 2025 14:16:52 +0800 Subject: [PATCH] =?UTF-8?q?=E9=83=A8=E5=88=86=E9=80=80=E6=AC=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../canteen/activity/OperationActivity.java | 7 ++ .../activity/order/MachineSaleActivity.java | 21 +++-- .../canteen/adapter/order/OrderAdapter.java | 15 ++- .../adapter/order/OrderDetailsAdapter.java | 23 +++++ .../order/entity/RefundDetailsBean.java | 39 ++++++++ .../db/dao/base/OfflineOrderInfoDao.java | 4 +- .../canteen/db/dao/base/OrderDetailsDao.java | 6 ++ .../db/entity/base/OfflineOrderInfo.java | 33 ++++++- .../db/entity/base/OrderDetailsInfo.java | 40 +++++++- .../service/upload/UpLoadDataService.java | 3 +- .../java/com/bonus/canteen/utils/Utils.java | 7 +- .../com/bonus/canteen/utils/WorkConfig.java | 2 +- .../utils/rabbitmq/RabbitMqMqttHelper.java | 91 +++++++++++++++---- .../res/layout/machine_sale_order_left.xml | 10 +- .../layout/machine_sale_order_left_item.xml | 10 +- .../res/layout/machine_sale_order_right.xml | 73 ++++++++++++++- .../layout/machine_sale_order_right_item.xml | 10 +- app/src/main/res/values/strings.xml | 3 + 18 files changed, 358 insertions(+), 39 deletions(-) create mode 100644 app/src/main/java/com/bonus/canteen/adapter/order/entity/RefundDetailsBean.java diff --git a/app/src/main/java/com/bonus/canteen/activity/OperationActivity.java b/app/src/main/java/com/bonus/canteen/activity/OperationActivity.java index 2fcc3d4..87c3f54 100644 --- a/app/src/main/java/com/bonus/canteen/activity/OperationActivity.java +++ b/app/src/main/java/com/bonus/canteen/activity/OperationActivity.java @@ -329,6 +329,7 @@ public class OperationActivity extends BaseActivity(), new OfflineOrderInfo()); XToastUtils.success("退单成功!"); } private void initData(String keyWord,String data,Integer type){ lstDetails.clear(); - if (data == null){ + if (data == null || data.isEmpty()) { data = DateTimeHelper.getNowDate(); } String finalData = data; @@ -213,11 +214,14 @@ public class MachineSaleActivity extends BaseActivity(), new OfflineOrderInfo()); break; case R.id.mac_inline: // 处理 button3 被点击的逻辑 @@ -256,6 +261,7 @@ public class MachineSaleActivity extends BaseActivity(), new OfflineOrderInfo()); break; case R.id.mac_hold_receive: // 处理 button3 被点击的逻辑 @@ -263,6 +269,7 @@ public class MachineSaleActivity extends BaseActivity(), new OfflineOrderInfo()); break; case R.id.mac_already_receive: // 处理 button3 被点击的逻辑 @@ -270,6 +277,7 @@ public class MachineSaleActivity extends BaseActivity(), new OfflineOrderInfo()); break; case R.id.mac_offline: // 处理 button3 被点击的逻辑 @@ -277,6 +285,7 @@ public class MachineSaleActivity extends BaseActivity(), new OfflineOrderInfo()); break; default: diff --git a/app/src/main/java/com/bonus/canteen/adapter/order/OrderAdapter.java b/app/src/main/java/com/bonus/canteen/adapter/order/OrderAdapter.java index 44d6d31..fd9f38f 100644 --- a/app/src/main/java/com/bonus/canteen/adapter/order/OrderAdapter.java +++ b/app/src/main/java/com/bonus/canteen/adapter/order/OrderAdapter.java @@ -103,6 +103,7 @@ public class OrderAdapter extends BaseAdapter { holder.machineRealAmount = convertView.findViewById(R.id.machine_real_amount); holder.machineOrState = convertView.findViewById(R.id.machine_ord_state); holder.machineRefund = convertView.findViewById(R.id.machine_refund); + holder.refundAmount = convertView.findViewById(R.id.refund_amount); convertView.setTag(holder); } else { holder = (ViewHolder) convertView.getTag(); @@ -114,6 +115,8 @@ public class OrderAdapter extends BaseAdapter { holder.machinePersonName.setText(bean.getUserName()); holder.machineTotalAmount.setText(new BigDecimal(bean.getAmountDue()).divide(new BigDecimal(100), 2, RoundingMode.HALF_UP) + ""); holder.machineRealAmount.setText(new BigDecimal(bean.getAmountDue()).divide(new BigDecimal(100), 2, RoundingMode.HALF_UP) + ""); + holder.refundAmount.setText(bean.getRefundAmount()); + if ("1".equals(bean.getPayStatus())) { if ("1".equals(bean.getIsOnline()) || "2".equals(bean.getIsOnline())) { holder.machineOrState.setText("【消费成功】"); @@ -122,8 +125,15 @@ public class OrderAdapter extends BaseAdapter { holder.machineOrState.setText("【未扣费】"); holder.machineOrState.setTextColor(Color.RED); } - } else if ("4".equals(bean.getPayStatus())) { + } else if ("4".equals(bean.getPayStatus()) || "5".equals(bean.getPayStatus())) { holder.machineOrState.setText("【已退单】"); + if ("5".equals(bean.getPayStatus())) { + if (bean.getRefundNum().equals(bean.getNum())){ + holder.machineOrState.setText("【全退款】"); + } else { + holder.machineOrState.setText("【部分退款】"); + } + } // 斜体 holder.machineOrState.getPaint().setTextSkewX(-0.25f); // 加粗 @@ -220,6 +230,7 @@ public class OrderAdapter extends BaseAdapter { AppDatabase.getDatabase(context).businessDataDao().updateOffLine(money, "1", DateTimeHelper.getNowDate()); } AppDatabase.getDatabase(context).offlineOrderDao().updatePayStatus("4", bean.getOrderId(), loginInfo.getUserName()); + AppDatabase.getDatabase(context).orderDetailsDao().updateStatus("1", bean.getOrderId()); runOnUiThread(() -> { SoundManager.getInstance().play(Sound.createSimpleSound(R.raw.refund_success)); MachineSaleActivity activity = (MachineSaleActivity) context; @@ -243,6 +254,7 @@ public class OrderAdapter extends BaseAdapter { */ private void refundOnlineOrder(OfflineOrderInfo bean, LoginInfo loginInfo, OfflineOrderInfo offlineOrderInfo, String money) { AppDatabase.getDatabase(context).offlineOrderDao().updatePayStatus("4", bean.getOrderId(), loginInfo.getUserName()); + AppDatabase.getDatabase(context).orderDetailsDao().updateStatus("1", bean.getOrderId()); String orderDate = offlineOrderInfo.getOrderTime().substring(0, 10); Log.d("退单", orderDate); if (orderDate.equals(DateTimeHelper.getNowDate())) { @@ -291,6 +303,7 @@ public class OrderAdapter extends BaseAdapter { TextView machinePersonName; TextView machineTotalAmount; TextView machineRealAmount; + TextView refundAmount; TextView machineOrState; TextView machineDeliveryState; TextView machineRefund; diff --git a/app/src/main/java/com/bonus/canteen/adapter/order/OrderDetailsAdapter.java b/app/src/main/java/com/bonus/canteen/adapter/order/OrderDetailsAdapter.java index 8fd6255..457a1cf 100644 --- a/app/src/main/java/com/bonus/canteen/adapter/order/OrderDetailsAdapter.java +++ b/app/src/main/java/com/bonus/canteen/adapter/order/OrderDetailsAdapter.java @@ -1,6 +1,7 @@ package com.bonus.canteen.adapter.order; import android.content.Context; +import android.graphics.Color; import android.util.Log; import android.view.LayoutInflater; import android.view.View; @@ -58,6 +59,7 @@ public class OrderDetailsAdapter extends BaseAdapter { holder.quantity = convertView.findViewById(R.id.machine_dish_quantity); holder.price = convertView.findViewById(R.id.machine_dish_price); holder.menuDetailId = convertView.findViewById(R.id.machine_dish_menu_detailId); + holder.status = convertView.findViewById(R.id.machine_dish_status); convertView.setTag(holder); }else { holder = (ViewHolder)convertView.getTag(); @@ -69,6 +71,26 @@ public class OrderDetailsAdapter extends BaseAdapter { holder.quantity.setText(bean.getNum()+""); holder.price.setText(bean.getPrice()+""); holder.menuDetailId.setText(bean.getSubTotal()); + if ("0".equals(bean.getStatus())) { + holder.status.setText("已付款"); + holder.status.setTextColor(Color.parseColor("#3CB371")); + } else if ("1".equals(bean.getStatus()) || "2".equals(bean.getStatus())) { + holder.status.setText("已退款"); + if ("2".equals(bean.getStatus())) { + if (!bean.getRefundNum().equals(bean.getNum())){ + holder.status.setText("部分退款"); + }else{ + holder.status.setText("全退款"); + } + } + // 斜体 + holder.status.getPaint().setTextSkewX(-0.25f); + // 加粗 + holder.status.getPaint().setFakeBoldText(true); + //设置中划线 + holder.status.getPaint().setFlags(android.graphics.Paint.STRIKE_THRU_TEXT_FLAG); + holder.status.setTextColor(Color.GRAY); + } return convertView; } @@ -77,6 +99,7 @@ public class OrderDetailsAdapter extends BaseAdapter { TextView quantity; TextView price; TextView menuDetailId; + TextView status; } diff --git a/app/src/main/java/com/bonus/canteen/adapter/order/entity/RefundDetailsBean.java b/app/src/main/java/com/bonus/canteen/adapter/order/entity/RefundDetailsBean.java new file mode 100644 index 0000000..537dbb1 --- /dev/null +++ b/app/src/main/java/com/bonus/canteen/adapter/order/entity/RefundDetailsBean.java @@ -0,0 +1,39 @@ +/* + * Copyright (C) 2025 xuexiangjys(xuexiangjys@163.com) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package com.bonus.canteen.adapter.order.entity; + +public class RefundDetailsBean { + private Long goodsId; + private Integer quantity; + + public Long getGoodsId() { + return goodsId; + } + + public Integer getQuantity() { + return quantity; + } + + public void setQuantity(Integer quantity) { + this.quantity = quantity; + } + + public void setGoodsId(Long goodsId) { + this.goodsId = goodsId; + } +} diff --git a/app/src/main/java/com/bonus/canteen/db/dao/base/OfflineOrderInfoDao.java b/app/src/main/java/com/bonus/canteen/db/dao/base/OfflineOrderInfoDao.java index 017f98f..bfe9000 100644 --- a/app/src/main/java/com/bonus/canteen/db/dao/base/OfflineOrderInfoDao.java +++ b/app/src/main/java/com/bonus/canteen/db/dao/base/OfflineOrderInfoDao.java @@ -47,8 +47,10 @@ public interface OfflineOrderInfoDao { void update(OfflineOrderInfo meal); // 更新数据 @Query("update offline_order_info set isOnline=:isOnline where orderId = :orderId") void updateIsOnline(String isOnline,String orderId); // 更新数据 - @Query("update offline_order_info set payStatus=:payStatus,refundOperator =:userName where orderId = :orderId") + @Query("update offline_order_info set payStatus=:payStatus,refundOperator =:userName,refundNum = num,refundAmount = amountDue,refundTime = CURRENT_TIMESTAMP where orderId = :orderId") void updatePayStatus(String payStatus,String orderId,String userName); // 更新数据 + @Query("update offline_order_info set payStatus=:payStatus,refundOperator =:userName,refundNum = :num+refundNum,refundAmount = :amountDue+refundAmount,refundTime = CURRENT_TIMESTAMP where orderId = :orderId") + void updatePayStatusAndRefundInfo(String payStatus,String orderId,String userName,String num,String amountDue ); // 更新数据 @Delete void delete(OfflineOrderInfo meal); // 删除数据 diff --git a/app/src/main/java/com/bonus/canteen/db/dao/base/OrderDetailsDao.java b/app/src/main/java/com/bonus/canteen/db/dao/base/OrderDetailsDao.java index 76af7ae..56e8cc5 100644 --- a/app/src/main/java/com/bonus/canteen/db/dao/base/OrderDetailsDao.java +++ b/app/src/main/java/com/bonus/canteen/db/dao/base/OrderDetailsDao.java @@ -19,6 +19,8 @@ public interface OrderDetailsDao { @Query("select * from order_details_info where orderId =:orderId") List getOrderInfoListByOrderId(String orderId); + @Query("select * from order_details_info where orderId =:orderId and goodsDishesId =:goodsDishesId") + OrderDetailsInfo getOrderInfoListByOrderId(String orderId, String goodsDishesId); @Insert void insert(OrderDetailsInfo orderInfo); // 插入数据 @@ -36,4 +38,8 @@ public interface OrderDetailsDao { @Query("delete from order_details_info") void deleteAll(); // 删除数据 + @Query("update order_details_info set refundNum=num,refundMoney = subTotal,status = :status where orderId = :orderId") + void updateStatus(String status, String orderId); + @Query("update order_details_info set refundNum=:num + refundNum,refundMoney = :subTotal + refundMoney,status = :status where orderId = :orderId and goodsDishesId = :goodsDishesId") + void updateStatusAndRefundInfo(String status, String orderId,String num, String subTotal,String goodsDishesId); } diff --git a/app/src/main/java/com/bonus/canteen/db/entity/base/OfflineOrderInfo.java b/app/src/main/java/com/bonus/canteen/db/entity/base/OfflineOrderInfo.java index 19f32e2..22bd95a 100644 --- a/app/src/main/java/com/bonus/canteen/db/entity/base/OfflineOrderInfo.java +++ b/app/src/main/java/com/bonus/canteen/db/entity/base/OfflineOrderInfo.java @@ -43,7 +43,7 @@ public class OfflineOrderInfo { @ColumnInfo private String num; @ColumnInfo - private String payStatus; + private String payStatus; //0:未支付 1:已支付 4:已退款 5:部分退款 @ColumnInfo private String isOnline; //0: 离线-已消费,未推送,1:在线消费成功 2:离线-推送成功 @ColumnInfo @@ -53,6 +53,37 @@ public class OfflineOrderInfo { @ColumnInfo private String jsonStr; + @ColumnInfo + private String refundTime; //退款时间 + @ColumnInfo + private String refundAmount; //退款金额 + @ColumnInfo + private String refundNum; //退单数量 + + public String getRefundTime() { + return refundTime; + } + + public void setRefundTime(String refundTime) { + this.refundTime = refundTime; + } + + public String getRefundAmount() { + return refundAmount; + } + + public void setRefundAmount(String refundAmount) { + this.refundAmount = refundAmount; + } + + public String getRefundNum() { + return refundNum; + } + + public void setRefundNum(String refundNum) { + this.refundNum = refundNum; + } + public String getRefundOperator() { return refundOperator; } diff --git a/app/src/main/java/com/bonus/canteen/db/entity/base/OrderDetailsInfo.java b/app/src/main/java/com/bonus/canteen/db/entity/base/OrderDetailsInfo.java index 58a0880..8207f18 100644 --- a/app/src/main/java/com/bonus/canteen/db/entity/base/OrderDetailsInfo.java +++ b/app/src/main/java/com/bonus/canteen/db/entity/base/OrderDetailsInfo.java @@ -12,7 +12,8 @@ public class OrderDetailsInfo { @ColumnInfo private String orderId; - + @ColumnInfo + private String goodsDishesId;//菜品id @ColumnInfo private String goodsDishesName;//菜品名称 @@ -24,6 +25,43 @@ public class OrderDetailsInfo { @ColumnInfo private String subTotal; + @ColumnInfo + private String refundNum;//退款数量 + @ColumnInfo + private String refundMoney;//退款金额 + @ColumnInfo + private String status;//状态 0:未退款 1:已退款 2:部分退款 + public String getRefundNum() { + return refundNum; + } + + public String getStatus() { + return status; + } + + public void setStatus(String status) { + this.status = status; + } + + public void setRefundNum(String refundNum) { + this.refundNum = refundNum; + } + + public String getRefundMoney() { + return refundMoney; + } + + public void setRefundMoney(String refundMoney) { + this.refundMoney = refundMoney; + } + + public String getGoodsDishesId() { + return goodsDishesId; + } + + public void setGoodsDishesId(String goodsDishesId) { + this.goodsDishesId = goodsDishesId; + } public String getSubTotal() { return subTotal; diff --git a/app/src/main/java/com/bonus/canteen/service/upload/UpLoadDataService.java b/app/src/main/java/com/bonus/canteen/service/upload/UpLoadDataService.java index 109e870..1f83d1f 100644 --- a/app/src/main/java/com/bonus/canteen/service/upload/UpLoadDataService.java +++ b/app/src/main/java/com/bonus/canteen/service/upload/UpLoadDataService.java @@ -96,8 +96,7 @@ public class UpLoadDataService extends Service { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { builder.setChannelId(notificationId); } - Notification notification = builder.build(); - return notification; + return builder.build(); } @Override diff --git a/app/src/main/java/com/bonus/canteen/utils/Utils.java b/app/src/main/java/com/bonus/canteen/utils/Utils.java index c3550c4..e1afb39 100644 --- a/app/src/main/java/com/bonus/canteen/utils/Utils.java +++ b/app/src/main/java/com/bonus/canteen/utils/Utils.java @@ -64,9 +64,12 @@ public final class Utils { - public static String conversionMoney(String money){ + public static String conversionMoney(String money,boolean isMoney){ if(StringHelper.isEmpty(money)){ - return "-1"; + return "0"; + } + if (!isMoney){ + return money; } BigDecimal bigDecimalDiscount = new BigDecimal(money); BigDecimal result = bigDecimalDiscount.divide(BigDecimal.valueOf(100)); diff --git a/app/src/main/java/com/bonus/canteen/utils/WorkConfig.java b/app/src/main/java/com/bonus/canteen/utils/WorkConfig.java index 68860d2..1a7e763 100644 --- a/app/src/main/java/com/bonus/canteen/utils/WorkConfig.java +++ b/app/src/main/java/com/bonus/canteen/utils/WorkConfig.java @@ -27,7 +27,7 @@ public class WorkConfig { //本地 // protected static String baseUrl = "http://192.168.0.34:48380/smart-canteen"; // protected static String prefixesUrl = "http://192.168.0.34:48380"; - protected static String baseUrl = "http://192.168.0.34:48380/smart-canteen"; + protected static String baseUrl = "http://192.168.0.244:48380/smart-canteen"; protected static String prefixesUrl = "http://192.168.0.34:48380"; protected static String fileUrl = "http://192.168.0.244:48380/lnyst/"; protected static String updateUrl = "https://www.baidu.com"; diff --git a/app/src/main/java/com/bonus/canteen/utils/rabbitmq/RabbitMqMqttHelper.java b/app/src/main/java/com/bonus/canteen/utils/rabbitmq/RabbitMqMqttHelper.java index e7049f5..9ccd0be 100644 --- a/app/src/main/java/com/bonus/canteen/utils/rabbitmq/RabbitMqMqttHelper.java +++ b/app/src/main/java/com/bonus/canteen/utils/rabbitmq/RabbitMqMqttHelper.java @@ -10,11 +10,13 @@ import android.util.Log; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; +import com.bonus.canteen.adapter.order.entity.RefundDetailsBean; import com.bonus.canteen.db.AppDatabase; import com.bonus.canteen.db.entity.base.BusinessDataInfo; import com.bonus.canteen.db.entity.base.CookMealTimesInfo; import com.bonus.canteen.db.entity.base.CustPhotoFulInfo; import com.bonus.canteen.db.entity.base.OfflineOrderInfo; +import com.bonus.canteen.db.entity.base.OrderDetailsInfo; import com.bonus.canteen.db.entity.base.UserInfo; import com.bonus.canteen.face.util.FaceServer; import com.bonus.canteen.service.data.GetBasicDataService; @@ -38,6 +40,7 @@ import org.eclipse.paho.client.mqttv3.MqttMessage; import java.math.BigDecimal; import java.math.RoundingMode; import java.util.Arrays; +import java.util.List; import cn.hutool.core.util.ObjectUtil; @@ -287,25 +290,79 @@ public class RabbitMqMqttHelper { } private void handleOrderStateUpdate(JSONObject json) { String orderId = json.getString("deviceOrderId"); + String type = json.getString("type"); if (!StringUtils.isEmpty(orderId)) { - ThreadPoolManager.getExecutor().execute(() -> { - OfflineOrderInfo offlineOrderInfo = AppDatabase.getDatabase(context).offlineOrderDao().getOfflineOrderById(orderId); - AppDatabase.getDatabase(context).offlineOrderDao().updatePayStatus("4", orderId,"后台操作"); - String money = new BigDecimal(offlineOrderInfo.getAmountDue()).divide(new BigDecimal(100),2, RoundingMode.HALF_UP) + ""; - String orderDate = offlineOrderInfo.getOrderTime().substring(0, 10); - Log.d("退单", orderDate); - if (orderDate.equals(DateTimeHelper.getNowDate())) { - Log.d("退单", "在当天"); - //判断是否在当餐 - CookMealTimesInfo cookMealTimesInfo = AppDatabase.getDatabase(context).cookMeetTimesDao().getDefaultCookMeetTime(); - if (cookMealTimesInfo.getIntervalId().equals(offlineOrderInfo.getIntervalId())) { - Log.d("退单", "在当餐"); - //修改当餐数据 - AppDatabase.getDatabase(context).businessDataDao().updateCurrent(money, "1", DateTimeHelper.getNowDate()); - } - AppDatabase.getDatabase(context).businessDataDao().updateToday(money, "1", DateTimeHelper.getNowDate()); + if ("1".equals(type)){ + cancelTheOrderAsAWhole(orderId); + }else{ + //部分退单 处理单个订单 + Log.e(TAG, "部分退单处理:" + json.toJSONString()); + String orderDetailsList = json.getString("deviceRefundOrderDetailBOList"); + if (!StringUtils.isEmpty(orderDetailsList)) { + partialOrderCancellations(orderDetailsList, orderId); } - }); + } + } } + /** + * 取消整个订单 + * @param orderId 订单ID + */ + private void cancelTheOrderAsAWhole(String orderId) { + ThreadPoolManager.getExecutor().execute(() -> { + OfflineOrderInfo offlineOrderInfo = AppDatabase.getDatabase(context).offlineOrderDao().getOfflineOrderById(orderId); + AppDatabase.getDatabase(context).offlineOrderDao().updatePayStatus("4", orderId,"后台操作"); + AppDatabase.getDatabase(context).orderDetailsDao().updateStatus("1", orderId); + String money = new BigDecimal(offlineOrderInfo.getAmountDue()).divide(new BigDecimal(100),2, RoundingMode.HALF_UP) + ""; + String orderDate = offlineOrderInfo.getOrderTime().substring(0, 10); + Log.d("退单", orderDate); + if (orderDate.equals(DateTimeHelper.getNowDate())) { + Log.d("退单", "在当天"); + //判断是否在当餐 + CookMealTimesInfo cookMealTimesInfo = AppDatabase.getDatabase(context).cookMeetTimesDao().getDefaultCookMeetTime(); + if (cookMealTimesInfo != null && cookMealTimesInfo.getIntervalId().equals(offlineOrderInfo.getIntervalId())) { + Log.d("退单", "在当餐"); + //修改当餐数据 + AppDatabase.getDatabase(context).businessDataDao().updateCurrent(money, "1", DateTimeHelper.getNowDate()); + } + AppDatabase.getDatabase(context).businessDataDao().updateToday(money, "1", DateTimeHelper.getNowDate()); + } + }); + } + /** + * 处理部分退单 + * @param orderDetailsList 订单详情列表 + * @param orderId 订单ID + */ + private void partialOrderCancellations(String orderDetailsList, String orderId) { + ThreadPoolManager.getExecutor().execute(() -> { + try { + List refundDetailsBeans = JSON.parseArray(orderDetailsList, RefundDetailsBean.class); + int refundNumber = 0; + BigDecimal refundMoney = BigDecimal.ZERO; + for (RefundDetailsBean refundDetailsBean : refundDetailsBeans) { + String dishesId = String.valueOf(refundDetailsBean.getGoodsId()); + int refundNum = refundDetailsBean.getQuantity(); + refundNumber += refundNum; + OrderDetailsInfo orderDetailsInfo = AppDatabase.getDatabase(context) + .orderDetailsDao().getOrderInfoListByOrderId(orderId, dishesId); + if (orderDetailsInfo != null) { + BigDecimal price = new BigDecimal(orderDetailsInfo.getPrice()); + BigDecimal money = price.multiply(BigDecimal.valueOf(refundNum)).setScale(2, RoundingMode.HALF_UP); + refundMoney = refundMoney.add(money); + // 更新订单详情状态 + AppDatabase.getDatabase(context).orderDetailsDao() + .updateStatusAndRefundInfo("2", orderId, String.valueOf(refundNum), money.toString(),dishesId); + } else { + Log.w(TAG, "未找到订单详情,dishesId: " + dishesId); + } + } + // 更新订单状态 + AppDatabase.getDatabase(context).offlineOrderDao().updatePayStatusAndRefundInfo("5", orderId, "后台操作",refundNumber + "",refundMoney + ""); + } catch (Exception e) { + Log.e(TAG, "处理部分退单异常", e); + } + }); + } } diff --git a/app/src/main/res/layout/machine_sale_order_left.xml b/app/src/main/res/layout/machine_sale_order_left.xml index fd8e8d6..10606d6 100644 --- a/app/src/main/res/layout/machine_sale_order_left.xml +++ b/app/src/main/res/layout/machine_sale_order_left.xml @@ -54,6 +54,14 @@ android:layout_height="match_parent" android:text="@string/machine_real_amount" /> + + @@ -40,6 +40,13 @@ android:gravity="center" android:text="@string/machine_dish_count" android:textSize="@dimen/config_margin_20dp" /> + @@ -52,7 +59,7 @@ android:id="@+id/machine_right_list" android:layout_width="match_parent" android:layout_height="0dp" - android:layout_weight="10"> + android:layout_weight="8"> + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 536c8b8..7a34ccb 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -117,6 +117,7 @@ 手机号 应付金额 实付金额 + 退单金额 叫号码 订单状态 制作状态 @@ -128,8 +129,10 @@ 单价 小计 总数量: + 退单数: 总金额: + 退单金额: 优惠金额 请输入姓名