浏览代码

1.修改订单列表
2.生成取餐码

qmj 1 月之前
父节点
当前提交
bc5e5ed0fc

+ 37 - 0
ruoyi-admin/src/main/java/com/ruoyi/app/mendian/PosStoreController.java

@@ -40,6 +40,7 @@ import org.springframework.web.bind.annotation.*;
 import jakarta.servlet.http.HttpServletResponse;
 
 import java.math.BigDecimal;
+import java.text.SimpleDateFormat;
 import java.util.*;
 import java.util.concurrent.atomic.AtomicInteger;
 import java.util.stream.Collectors;
@@ -181,10 +182,46 @@ public class PosStoreController extends BaseController {
             storeList.stream().filter(s -> Long.valueOf(s.getId()).equals(item.getMdId())).findFirst().ifPresent(st -> {
                 posOrder.setOrderCategory(String.valueOf(st.getType()));
             });
+            setPickUpNum(posOrder);
             posOrderService.save(posOrder);
         }
     }
 
+    //生成取餐码,根据门店id,当天取餐码从1开始累加
+    private void setPickUpNum(PosOrder order) {
+        if (order == null || order.getMdId() == null) {
+            return;
+        }
+        try {
+            // 获取当前日期,格式为 yyyy-MM-dd
+            SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
+            String today = dateFormat.format(new Date());
+
+            // 查询当天该门店的最大取餐码
+            LambdaQueryWrapper<PosOrder> queryWrapper = new LambdaQueryWrapper<>();
+            queryWrapper.eq(PosOrder::getMdId, order.getMdId());
+            queryWrapper.like(PosOrder::getCretim, today);
+            queryWrapper.orderByDesc(PosOrder::getPickUpNum);
+            queryWrapper.last("LIMIT 1");
+
+            PosOrder lastOrder = posOrderService.getOne(queryWrapper);
+            long nextNum = 1L;
+            if (lastOrder != null && lastOrder.getPickUpNum() != null) {
+                // 直接使用Long类型的取餐码
+                nextNum = lastOrder.getPickUpNum() + 1;
+            }
+            // 生成新的取餐码:直接使用Long数字
+            order.setPickUpNum(nextNum);
+            logger.info("生成取餐码成功:门店ID={}, 取餐码={}", order.getMdId(), nextNum);
+
+        } catch (Exception e) {
+            logger.error("生成取餐码失败:门店ID={}, 错误信息={}", order.getMdId(), e.getMessage(), e);
+            // 生成失败时使用时间戳作为备用方案
+            Long fallbackPickUpNum = System.currentTimeMillis() % 10000;
+            order.setPickUpNum(fallbackPickUpNum);
+        }
+    }
+
 
     /**
      * 根据评分查旬门店

+ 3 - 0
ruoyi-admin/src/main/java/com/ruoyi/app/order/PosOrderController.java

@@ -1281,6 +1281,9 @@ public class PosOrderController extends BaseController {
         }
     }
 
+
+
+
     //统计美食销售量
     private void foodStatistics(Map<Long, Long> map) {
         for (Map.Entry<Long, Long> entry : map.entrySet()) {

+ 37 - 0
ruoyi-admin/src/main/java/com/ruoyi/app/order/UserOrderController.java

@@ -26,6 +26,7 @@ import org.springframework.web.bind.annotation.*;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.text.SimpleDateFormat;
 import java.util.Date;
 import java.util.List;
 import java.util.Optional;
@@ -177,6 +178,7 @@ public class UserOrderController extends BaseController {
             });
             // 保存子订单
             createFootprint(userId, item.getMdId());
+            setPickUpNum(posOrder);
             posOrderService.save(posOrder);
 
             // 创建订单成功,给商家推送"您有新订单了"
@@ -199,6 +201,41 @@ public class UserOrderController extends BaseController {
         }
     }
 
+    //生成取餐码,根据门店id,当天取餐码从1开始累加
+    private void setPickUpNum(PosOrder order) {
+        if (order == null || order.getMdId() == null) {
+            return;
+        }
+        try {
+            // 获取当前日期,格式为 yyyy-MM-dd
+            SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
+            String today = dateFormat.format(new Date());
+
+            // 查询当天该门店的最大取餐码
+            LambdaQueryWrapper<PosOrder> queryWrapper = new LambdaQueryWrapper<>();
+            queryWrapper.eq(PosOrder::getMdId, order.getMdId());
+            queryWrapper.like(PosOrder::getCretim, today);
+            queryWrapper.orderByDesc(PosOrder::getPickUpNum);
+            queryWrapper.last("LIMIT 1");
+
+            PosOrder lastOrder = posOrderService.getOne(queryWrapper);
+            long nextNum = 1L;
+            if (lastOrder != null && lastOrder.getPickUpNum() != null) {
+                // 直接使用Long类型的取餐码
+                nextNum = lastOrder.getPickUpNum() + 1;
+            }
+            // 生成新的取餐码:直接使用Long数字
+            order.setPickUpNum(nextNum);
+            logger.info("生成取餐码成功:门店ID={}, 取餐码={}", order.getMdId(), nextNum);
+
+        } catch (Exception e) {
+            logger.error("生成取餐码失败:门店ID={}, 错误信息={}", order.getMdId(), e.getMessage(), e);
+            // 生成失败时使用时间戳作为备用方案
+            Long fallbackPickUpNum = System.currentTimeMillis() % 10000;
+            order.setPickUpNum(fallbackPickUpNum);
+        }
+    }
+
     //设置显示状态
     private void handleIsDisplay(PosOrder posOrder){
         if (StringUtils.isEmpty(posOrder.getDelryTime())) {