From 96483f10fdb66727c3767826fcec6c99958e74b6 Mon Sep 17 00:00:00 2001
From: xuhy <3313886187@qq.com>
Date: 星期二, 27 八月 2024 17:21:23 +0800
Subject: [PATCH] 餐饮数据生成完成

---
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TDataGeneratorController.java       |   44 +++++
 ruoyi-system/src/main/java/com/ruoyi/system/service/TOrderMealService.java                 |    5 
 ruoyi-system/src/main/java/com/ruoyi/system/service/TShopService.java                      |   11 -
 ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml                            |    2 
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TOrderStockServiceImpl.java       |    3 
 ruoyi-system/src/main/java/com/ruoyi/system/domain/TOrderMeal.java                         |    5 
 ruoyi-system/src/main/java/com/ruoyi/system/vo/TFoundationConfigVO.java                    |   15 +
 ruoyi-system/src/main/java/com/ruoyi/system/mapper/TDataGeneratorMapper.java               |   17 ++
 ruoyi-system/src/main/java/com/ruoyi/system/vo/TOrderMealVO.java                           |   10 +
 ruoyi-system/src/main/java/com/ruoyi/system/dto/TOrderMealDTO.java                         |    1 
 ruoyi-system/src/main/java/com/ruoyi/system/service/TFoundationConfigService.java          |    9 +
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TOrderMealController.java           |    6 
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TOrderSaleServiceImpl.java        |    3 
 ruoyi-system/src/main/resources/mapper/system/TDataGeneratorMapper.xml                     |   28 +++
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TDataGeneratorServiceImpl.java    |  196 ++++++++++++++++++++++++
 ruoyi-system/src/main/resources/mapper/system/TFoundationConfigMapper.xml                  |    5 
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TOrderMealServiceImpl.java        |    5 
 ruoyi-admin/src/main/resources/application-druid.yml                                       |    2 
 ruoyi-system/src/main/java/com/ruoyi/system/domain/TDataGenerator.java                     |   64 ++++++++
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TFoundationConfigServiceImpl.java |    7 
 ruoyi-system/src/main/java/com/ruoyi/system/mapper/TFoundationConfigMapper.java            |    9 +
 ruoyi-system/src/main/java/com/ruoyi/system/dto/OrderMealGeneratorCountDTO.java            |    3 
 ruoyi-system/src/main/java/com/ruoyi/system/service/TDataGeneratorService.java             |   21 ++
 23 files changed, 440 insertions(+), 31 deletions(-)

diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TDataGeneratorController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TDataGeneratorController.java
new file mode 100644
index 0000000..c52f3b8
--- /dev/null
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TDataGeneratorController.java
@@ -0,0 +1,44 @@
+package com.ruoyi.web.controller.api;
+
+
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.system.dto.OrderMealGeneratorDTO;
+import com.ruoyi.system.service.TDataGeneratorService;
+import com.ruoyi.system.service.TOrderMealService;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ * 营业数据生成 前端控制器
+ * </p>
+ *
+ * @author xiaochen
+ * @since 2024-08-27
+ */
+@RestController
+@RequestMapping("/t-data-generator")
+public class TDataGeneratorController {
+
+    private final TOrderMealService orderMealService;
+    private final TDataGeneratorService dataGeneratorService;
+
+    @Autowired
+    public TDataGeneratorController(TOrderMealService orderMealService, TDataGeneratorService dataGeneratorService) {
+        this.orderMealService = orderMealService;
+        this.dataGeneratorService = dataGeneratorService;
+    }
+
+    @ApiOperation( value = "餐饮数据生成")
+    @PostMapping(value = "/dataGenerator")
+    public AjaxResult<String> dataGenerator(@RequestBody OrderMealGeneratorDTO dto) {
+        dataGeneratorService.dataGenerator(dto);
+        return AjaxResult.success();
+    }
+
+}
+
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TOrderMealController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TOrderMealController.java
index d6b4098..9fc8f11 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TOrderMealController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TOrderMealController.java
@@ -74,11 +74,5 @@
         return AjaxResult.success();
     }
 
-    @ApiOperation( value = "餐饮数据生成")
-    @PostMapping(value = "/dataGenerator")
-    public AjaxResult<String> dataGenerator(@RequestBody OrderMealGeneratorDTO dto) {
-        orderMealService.dataGenerator(dto);
-        return AjaxResult.success();
-    }
 }
 
diff --git a/ruoyi-admin/src/main/resources/application-druid.yml b/ruoyi-admin/src/main/resources/application-druid.yml
index 9ee5a63..6f262ae 100644
--- a/ruoyi-admin/src/main/resources/application-druid.yml
+++ b/ruoyi-admin/src/main/resources/application-druid.yml
@@ -6,7 +6,7 @@
         druid:
             # 主库数据源
             master:
-                url: jdbc:mysql://192.168.110.34:3306/hollywood?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
+                url: jdbc:mysql://192.168.110.34:3306/cashier?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
                 username: root
                 password: 123456
 #                url: jdbc:mysql://8.137.10.192:3306/sys_config?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=GMT%2B8
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/TDataGenerator.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/TDataGenerator.java
new file mode 100644
index 0000000..47d6c04
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/TDataGenerator.java
@@ -0,0 +1,64 @@
+package com.ruoyi.system.domain;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.ruoyi.common.core.domain.BaseModel;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ * <p>
+ * 营业数据生成
+ * </p>
+ *
+ * @author xiaochen
+ * @since 2024-08-27
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@TableName("t_data_generator")
+@ApiModel(value="TDataGenerator对象", description="营业数据生成")
+public class TDataGenerator extends BaseModel {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    @ApiModelProperty(value = "操作人id")
+    @TableField("userId")
+    private Long userId;
+
+    @ApiModelProperty(value = "操作人姓名")
+    @TableField("userName")
+    private String userName;
+
+    @ApiModelProperty(value = "店铺id")
+    @TableField("shopId")
+    private Long shopId;
+
+    @ApiModelProperty(value = "开始时间")
+    @TableField("startTime")
+    private LocalDateTime startTime;
+
+    @ApiModelProperty(value = "结束时间")
+    @TableField("endTime")
+    private LocalDateTime endTime;
+
+    @ApiModelProperty(value = "最小金额")
+    @TableField("minMoney")
+    private Double minMoney;
+
+    @ApiModelProperty(value = "最大金额")
+    @TableField("maxMoney")
+    private Double maxMoney;
+
+    @ApiModelProperty(value = "状态 1=生成中 2=待覆盖 3=已覆盖")
+    @TableField("status")
+    private Integer status;
+
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/TOrderMeal.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/TOrderMeal.java
index c2071c6..d81c0d2 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/domain/TOrderMeal.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/TOrderMeal.java
@@ -10,6 +10,7 @@
 import java.io.Serializable;
 import java.math.BigDecimal;
 import java.time.LocalDateTime;
+import java.util.List;
 
 /**
  * <p>
@@ -62,5 +63,9 @@
     @TableField("status")
     private Integer status;
 
+    @ApiModelProperty(value = "商品集合")
+    @TableField(exist = false)
+    private List<TOrderMealGoods> mealOrderGoods;;
+
 
 }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/dto/OrderMealGeneratorCountDTO.java b/ruoyi-system/src/main/java/com/ruoyi/system/dto/OrderMealGeneratorCountDTO.java
index 7a25c69..bf9749c 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/dto/OrderMealGeneratorCountDTO.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/dto/OrderMealGeneratorCountDTO.java
@@ -14,6 +14,9 @@
 @ApiModel(value = "OrderMealGeneratorCountDTO对象", description = "餐饮数据生成订单数量")
 public class OrderMealGeneratorCountDTO implements Serializable {
 
+    @ApiModelProperty(value = "餐桌id")
+    private Long boardId;
+
     @ApiModelProperty(value = "桌号")
     private String boardName;
 
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/dto/TOrderMealDTO.java b/ruoyi-system/src/main/java/com/ruoyi/system/dto/TOrderMealDTO.java
index c0fa0dd..8bde256 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/dto/TOrderMealDTO.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/dto/TOrderMealDTO.java
@@ -1,6 +1,7 @@
 package com.ruoyi.system.dto;
 
 import com.ruoyi.system.domain.TOrderMeal;
+import com.ruoyi.system.domain.TOrderMealGoods;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TDataGeneratorMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TDataGeneratorMapper.java
new file mode 100644
index 0000000..7ada9fb
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TDataGeneratorMapper.java
@@ -0,0 +1,17 @@
+package com.ruoyi.system.mapper;
+
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.system.domain.TDataGenerator;
+
+/**
+ * <p>
+ * 营业数据生成 Mapper 接口
+ * </p>
+ *
+ * @author xiaochen
+ * @since 2024-08-27
+ */
+public interface TDataGeneratorMapper extends BaseMapper<TDataGenerator> {
+
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TFoundationConfigMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TFoundationConfigMapper.java
index d37c9e4..8211978 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TFoundationConfigMapper.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TFoundationConfigMapper.java
@@ -2,6 +2,9 @@
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.ruoyi.system.domain.TFoundationConfig;
+import com.ruoyi.system.vo.TFoundationConfigVO;
+
+import java.util.List;
 
 /**
  * <p>
@@ -13,4 +16,10 @@
  */
 public interface TFoundationConfigMapper extends BaseMapper<TFoundationConfig> {
 
+    /**
+     * 查询所有的人数用餐标准
+     * @return
+     */
+    List<TFoundationConfigVO> getList();
+
 }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/TDataGeneratorService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/TDataGeneratorService.java
new file mode 100644
index 0000000..39d4e54
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/TDataGeneratorService.java
@@ -0,0 +1,21 @@
+package com.ruoyi.system.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.system.domain.TDataGenerator;
+import com.ruoyi.system.dto.OrderMealGeneratorDTO;
+
+/**
+ * <p>
+ * 营业数据生成 服务类
+ * </p>
+ *
+ * @author xiaochen
+ * @since 2024-08-27
+ */
+public interface TDataGeneratorService extends IService<TDataGenerator> {
+    /**
+     * 餐饮数据生成
+     * @param dto
+     */
+    void dataGenerator(OrderMealGeneratorDTO dto);
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/TFoundationConfigService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/TFoundationConfigService.java
index 961962b..3db8624 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/TFoundationConfigService.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/TFoundationConfigService.java
@@ -2,6 +2,9 @@
 
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.ruoyi.system.domain.TFoundationConfig;
+import com.ruoyi.system.vo.TFoundationConfigVO;
+
+import java.util.List;
 
 /**
  * <p>
@@ -13,4 +16,10 @@
  */
 public interface TFoundationConfigService extends IService<TFoundationConfig> {
 
+    /**
+     * 查询所有的人数用餐标准
+     * @return
+     */
+    List<TFoundationConfigVO> getList();
+
 }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/TOrderMealService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/TOrderMealService.java
index 7e6bd17..028cc10 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/TOrderMealService.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/TOrderMealService.java
@@ -36,9 +36,4 @@
      */
     void checkout(CheckoutDTO dto);
 
-    /**
-     * 餐饮数据生成
-     * @param dto
-     */
-    void dataGenerator(OrderMealGeneratorDTO dto);
 }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/TShopService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/TShopService.java
index b813d5a..ca871ff 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/TShopService.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/TShopService.java
@@ -24,15 +24,4 @@
      */
     PageInfo<TShopVO> pageList(TShopQuery query);
 
-    /**
-     * 添加店铺信息
-     * @param dto
-     */
-    void add(TShopDTO dto);
-
-    /**
-     * 编辑店铺信息
-     * @param dto
-     */
-    void edit(TShopDTO dto);
 }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TDataGeneratorServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TDataGeneratorServiceImpl.java
new file mode 100644
index 0000000..527d183
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TDataGeneratorServiceImpl.java
@@ -0,0 +1,196 @@
+package com.ruoyi.system.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.common.constant.OrderNumConstants;
+import com.ruoyi.common.exception.ServiceException;
+import com.ruoyi.common.utils.CodeGenerateUtils;
+import com.ruoyi.system.domain.*;
+import com.ruoyi.system.dto.OrderMealGeneratorCountDTO;
+import com.ruoyi.system.dto.OrderMealGeneratorDTO;
+import com.ruoyi.system.dto.TOrderMealDTO;
+import com.ruoyi.system.mapper.TDataGeneratorMapper;
+import com.ruoyi.system.service.*;
+import com.ruoyi.system.vo.TFoundationConfigVO;
+import org.apache.poi.ss.formula.functions.T;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.math.BigDecimal;
+import java.math.RoundingMode;
+import java.util.*;
+import java.util.stream.Collectors;
+
+/**
+ * <p>
+ * 营业数据生成 服务实现类
+ * </p>
+ *
+ * @author xiaochen
+ * @since 2024-08-27
+ */
+@Service
+public class TDataGeneratorServiceImpl extends ServiceImpl<TDataGeneratorMapper, TDataGenerator> implements TDataGeneratorService {
+
+    @Autowired
+    private TBoardService boardService;
+    @Autowired
+    private TFoundationConfigService foundationConfigService;
+    @Autowired
+    private TGoodsService goodsService;
+    @Autowired
+    private TOrderMealService orderMealService;
+    @Autowired
+    private TOrderMealGoodsService orderMealGoodsService;
+
+    @Override
+    public void dataGenerator(OrderMealGeneratorDTO dto) {
+        long start = System.currentTimeMillis();
+        // 查询所有的人数用餐标准
+        List<TFoundationConfigVO> foundationConfigs = foundationConfigService.getList();
+        // 查询所有桌子
+        List<TBoard> boards = boardService.list();
+        // 查询所有菜品
+        List<TGoods> goods = goodsService.list();
+        // 循环待生成订单列表,添加到集合中,批量插入
+        List<OrderMealGeneratorCountDTO> orderMealGeneratorCountDTOS = dto.getOrderMealGeneratorCountDTOS();
+        List<TOrderMeal> orderMeals = new ArrayList<>();
+        for (OrderMealGeneratorCountDTO orderMealGeneratorCountDTO : orderMealGeneratorCountDTOS) {
+            TBoard board = boards.stream().filter(e -> e.getId().equals(orderMealGeneratorCountDTO.getBoardId())).findFirst().get();
+            Integer orderCount = orderMealGeneratorCountDTO.getOrderCount();
+            // 查询当前桌的用餐人数
+            for (int i = 1; i <= orderCount; i++) {
+                int random = getRandom(board.getMinPerson(), board.getMaxPerson());
+                TOrderMeal orderMeal = new TOrderMeal();
+                orderMeal.setBoardId(board.getId());
+                orderMeal.setMealType(1);
+                orderMeal.setMealPerson(random);
+                orderMeal.setOrderNum(OrderNumConstants.MEAL + CodeGenerateUtils.generateOrderSn());
+                orderMeal.setStatus(2);
+                List<TOrderMealGoods> orderMealGoods = new ArrayList<>();
+                List<TFoundationConfigVO> foundationConfigVOS = foundationConfigs.stream().filter(e -> e.getMealCount().equals(random)).collect(Collectors.toList());
+                foundationConfigVOS.forEach(e -> {
+                    int random1 = getRandom(e.getMinCount(), e.getMaxCount());
+                    List<TGoods> typeGoods = goods.stream().filter(m -> e.getTypeId().equals(m.getTypeId())).collect(Collectors.toList());
+                    typeGoods = randomSelection(typeGoods, random1);
+                    for (TGoods typeGood : typeGoods) {
+                        int count = 0;
+                        for (TOrderMealGoods good : orderMealGoods) {
+                            if (good.getGoodsNum().equals(typeGood.getGoodsNum())) {
+                                count+=1;
+                                good.setGoodsCount(good.getGoodsCount() + 1);
+                                break; // 找到后直接跳出循环
+                            }
+                        }
+                        if (count==0) {
+                            TOrderMealGoods tOrderMealGoods = new TOrderMealGoods();
+                            tOrderMealGoods.setGoodsNum(typeGood.getGoodsNum());
+                            tOrderMealGoods.setGoodsName(typeGood.getGoodsName());
+                            tOrderMealGoods.setGoodsPicture(typeGood.getGoodsPicture());
+                            tOrderMealGoods.setGoodsSalePrice(typeGood.getSalePrice());
+                            tOrderMealGoods.setGoodsCount(1);
+                            orderMealGoods.add(tOrderMealGoods);
+                        }
+                    }
+                });
+                orderMeal.setMealOrderGoods(orderMealGoods);
+                orderMeal.setOrderMoney(orderMealGoods.stream().map(TOrderMealGoods::getGoodsSalePrice).reduce(BigDecimal::add).get());
+                orderMeal.setPayMoney(orderMealGoods.stream().map(TOrderMealGoods::getGoodsSalePrice).reduce(BigDecimal::add).get());
+                orderMeals.add(orderMeal);
+            }
+        }
+        BigDecimal sumMoney = orderMeals.stream().map(TOrderMeal::getPayMoney).reduce(BigDecimal::add).get();
+        if(sumMoney.compareTo(dto.getMinTurnover()) >= 0 || sumMoney.compareTo(dto.getMaxTurnover()) <= 0){
+            int weiXin = getRandomPayType(orderMeals.size(), dto.getWeiXinProportion());
+            int ali = getRandomPayType(orderMeals.size(), dto.getAliProportion());
+            int card = getRandomPayType(orderMeals.size(), dto.getCardProportion());
+            int money = getRandomPayType(orderMeals.size(), dto.getMoneyProportion());
+            int other = getRandomPayType(orderMeals.size(), dto.getOtherProportion());
+            switch (orderMeals.size()-(weiXin+ali+card+money+other)){
+                case 1:
+                    weiXin += 1;
+                    break;
+                case 2:
+                    weiXin += 1;
+                    ali += 1;
+                    break;
+                case 3:
+                    weiXin += 1;
+                    ali += 1;
+                    card += 1;
+                    break;
+                case 4:
+                    weiXin += 1;
+                    ali += 1;
+                    card += 1;
+                    money += 1;
+                    break;
+                case 5:
+                    weiXin += 1;
+                    ali += 1;
+                    card += 1;
+                    money += 1;
+                    other += 1;
+                    break;
+            }
+            List<TOrderMeal> weiXinOrderMeals = orderMeals.subList(0, weiXin);
+            List<TOrderMeal> aliOrderMeals = orderMeals.subList(weiXin, weiXin+ali);
+            List<TOrderMeal> cardOrderMeals = orderMeals.subList(weiXin+ali, weiXin+ali+card);
+            List<TOrderMeal> moneyOrderMeals = orderMeals.subList(weiXin+ali+card, weiXin+ali+card+money);
+            List<TOrderMeal> otherOrderMeals = orderMeals.subList(weiXin+ali+card+money, weiXin+ali+card+money+other);
+            weiXinOrderMeals.forEach(e->e.setPayType(3));
+            aliOrderMeals.forEach(e->e.setPayType(2));
+            cardOrderMeals.forEach(e->e.setPayType(4));
+            moneyOrderMeals.forEach(e->e.setPayType(1));
+            otherOrderMeals.forEach(e->e.setPayType(5));
+            List<TOrderMeal> allOrderMeals = new ArrayList<>();
+            allOrderMeals.addAll(weiXinOrderMeals);
+            allOrderMeals.addAll(aliOrderMeals);
+            allOrderMeals.addAll(cardOrderMeals);
+            allOrderMeals.addAll(moneyOrderMeals);
+            allOrderMeals.addAll(otherOrderMeals);
+            orderMealService.saveBatch(allOrderMeals);
+
+            for (TOrderMeal weiXinOrderMeal : allOrderMeals) {
+                weiXinOrderMeal.getMealOrderGoods().forEach(e->e.setOrderId(weiXinOrderMeal.getId()));
+            }
+            orderMealGoodsService.saveBatch(allOrderMeals.stream().map(TOrderMeal::getMealOrderGoods).flatMap(Collection::stream).collect(Collectors.toList()));
+            long end = System.currentTimeMillis() - start;
+            System.err.println("相差时间========="+end);
+        }else {
+            throw new ServiceException("数据生成不在营业额范围内");
+        }
+
+    }
+
+    private int getRandomPayType(Integer size,BigDecimal count) {
+        BigDecimal bigDecimal = new BigDecimal(size).multiply(count.divide(new BigDecimal(100))).setScale(0, RoundingMode.HALF_UP);
+        return Integer.parseInt(bigDecimal.toString());
+    }
+
+    private int getRandom(int min,int max) {
+        // 生成一个min到max之间的随机数
+        return new Random().nextInt(max - min + 1) + min;
+    }
+
+    private static <T> List<T> randomSelection(List<T> list, int size) {
+        List<T> selected = new ArrayList<>();
+        int length = list.size();
+        for (int i = 0; i < size; i++) {
+            Collections.shuffle(list);
+            // 如果需求的大小超过了集合的长度,则只能取到集合的全部元素
+            int subListSize = Math.min(size - selected.size(), length);
+            selected.addAll(list.subList(0, subListSize));
+        }
+        return selected;
+    }
+
+    public static void main(String[] args) {
+//        System.err.println(new Random().nextInt(1 - 0 + 1) + 0);
+        List<Integer> list = new ArrayList<>();
+        list.add(1);
+        list.add(2);
+        list.add(3);
+        list.add(4);
+        System.err.println(list.subList(1,2));
+    }
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TFoundationConfigServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TFoundationConfigServiceImpl.java
index 6946443..b7b4fce 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TFoundationConfigServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TFoundationConfigServiceImpl.java
@@ -4,7 +4,10 @@
 import com.ruoyi.system.domain.TFoundationConfig;
 import com.ruoyi.system.mapper.TFoundationConfigMapper;
 import com.ruoyi.system.service.TFoundationConfigService;
+import com.ruoyi.system.vo.TFoundationConfigVO;
 import org.springframework.stereotype.Service;
+
+import java.util.List;
 
 /**
  * <p>
@@ -17,4 +20,8 @@
 @Service
 public class TFoundationConfigServiceImpl extends ServiceImpl<TFoundationConfigMapper, TFoundationConfig> implements TFoundationConfigService {
 
+    @Override
+    public List<TFoundationConfigVO> getList() {
+        return this.baseMapper.getList();
+    }
 }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TOrderMealServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TOrderMealServiceImpl.java
index 61b49af..cc9e9cb 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TOrderMealServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TOrderMealServiceImpl.java
@@ -25,6 +25,7 @@
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Objects;
+import java.util.Random;
 import java.util.stream.Collectors;
 
 /**
@@ -137,8 +138,4 @@
         boardService.updateById(board);
     }
 
-    @Override
-    public void dataGenerator(OrderMealGeneratorDTO dto) {
-        // 循环待生成订单列表,添加到集合中,批量插入
-    }
 }
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TOrderSaleServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TOrderSaleServiceImpl.java
index 27ea1da..ce3a1b9 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TOrderSaleServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TOrderSaleServiceImpl.java
@@ -1,6 +1,7 @@
 package com.ruoyi.system.service.impl;
 
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.common.constant.OrderNumConstants;
 import com.ruoyi.common.utils.CodeGenerateUtils;
 import com.ruoyi.system.domain.TOrderSale;
 import com.ruoyi.system.domain.TOrderSaleGoods;
@@ -31,7 +32,7 @@
     @Override
     public void add(TOrderSaleDTO dto) {
         // 销售单号
-        dto.setOrderNum("XS" + CodeGenerateUtils.generateOrderSn());
+        dto.setOrderNum(OrderNumConstants.SALE + CodeGenerateUtils.generateOrderSn());
         List<TOrderSaleGoods> orderSaleGoods = dto.getOrderSaleGoods();
         BigDecimal sum = orderSaleGoods.stream().map(TOrderSaleGoods::getGoodsSalePrice).reduce(BigDecimal::add).get();
         dto.setOrderMoney(sum);
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TOrderStockServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TOrderStockServiceImpl.java
index 4aa239d..3987209 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TOrderStockServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TOrderStockServiceImpl.java
@@ -3,6 +3,7 @@
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ruoyi.common.basic.PageInfo;
+import com.ruoyi.common.constant.OrderNumConstants;
 import com.ruoyi.common.utils.CodeGenerateUtils;
 import com.ruoyi.system.domain.TOrderSaleGoods;
 import com.ruoyi.system.domain.TOrderStock;
@@ -38,7 +39,7 @@
     @Override
     public void add(TOrderStockDTO dto) {
         // 进货单号
-        dto.setStockNum("JH" + CodeGenerateUtils.generateOrderSn());
+        dto.setStockNum(OrderNumConstants.STOCK + CodeGenerateUtils.generateOrderSn());
         List<TOrderStockGoods> orderStockGoods = dto.getOrderStockGoods();
         BigDecimal sum = orderStockGoods.stream().map(TOrderStockGoods::getStockPrice).reduce(BigDecimal::add).get();
         dto.setStockTotalPrice(sum);
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/vo/TFoundationConfigVO.java b/ruoyi-system/src/main/java/com/ruoyi/system/vo/TFoundationConfigVO.java
new file mode 100644
index 0000000..43b9c91
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/vo/TFoundationConfigVO.java
@@ -0,0 +1,15 @@
+package com.ruoyi.system.vo;
+
+import com.ruoyi.system.domain.TFoundationConfig;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+@ApiModel(value = "用餐人数VO")
+public class TFoundationConfigVO extends TFoundationConfig {
+
+    @ApiModelProperty(value = "用餐人数")
+    private Integer mealCount;
+
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/vo/TOrderMealVO.java b/ruoyi-system/src/main/java/com/ruoyi/system/vo/TOrderMealVO.java
new file mode 100644
index 0000000..91bcd34
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/vo/TOrderMealVO.java
@@ -0,0 +1,10 @@
+package com.ruoyi.system.vo;
+
+import com.ruoyi.system.domain.TOrderMeal;
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+
+@Data
+@ApiModel(value = "TOrderMealVO对象",description = "餐饮订单VO")
+public class TOrderMealVO extends TOrderMeal {
+}
diff --git a/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml b/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml
index 0333c0a..6ab93b6 100644
--- a/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml
+++ b/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml
@@ -302,8 +302,6 @@
  			<if test="loginDate != null">login_date = #{loginDate},</if>
  			<if test="updateBy != null and updateBy != ''">update_by = #{updateBy},</if>
  			<if test="remark != null">remark = #{remark},</if>
-			<if test="ifBlack != null">ifBlack = #{ifBlack},</if>
-			<if test="districtId != null">districtId = #{districtId},</if>
  			update_time = sysdate()
  		</set>
  		where user_id = #{userId}
diff --git a/ruoyi-system/src/main/resources/mapper/system/TDataGeneratorMapper.xml b/ruoyi-system/src/main/resources/mapper/system/TDataGeneratorMapper.xml
new file mode 100644
index 0000000..af72615
--- /dev/null
+++ b/ruoyi-system/src/main/resources/mapper/system/TDataGeneratorMapper.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.system.mapper.TDataGeneratorMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.ruoyi.system.domain.TDataGenerator">
+        <id column="id" property="id" />
+        <result column="userId" property="userId" />
+        <result column="userName" property="userName" />
+        <result column="shopId" property="shopId" />
+        <result column="startTime" property="startTime" />
+        <result column="endTime" property="endTime" />
+        <result column="minMoney" property="minMoney" />
+        <result column="maxMoney" property="maxMoney" />
+        <result column="status" property="status" />
+        <result column="createTime" property="createTime" />
+        <result column="updateTime" property="updateTime" />
+        <result column="disabled" property="disabled" />
+        <result column="createBy" property="createBy" />
+        <result column="updateBy" property="updateBy" />
+    </resultMap>
+
+    <!-- 通用查询结果列 -->
+    <sql id="Base_Column_List">
+        id, userId, userName, shopId, startTime, endTime, minMoney, maxMoney, status, createTime, updateTime, disabled, createBy, updateBy
+    </sql>
+
+</mapper>
diff --git a/ruoyi-system/src/main/resources/mapper/system/TFoundationConfigMapper.xml b/ruoyi-system/src/main/resources/mapper/system/TFoundationConfigMapper.xml
index 3c49e71..5432c03 100644
--- a/ruoyi-system/src/main/resources/mapper/system/TFoundationConfigMapper.xml
+++ b/ruoyi-system/src/main/resources/mapper/system/TFoundationConfigMapper.xml
@@ -15,5 +15,10 @@
     <sql id="Base_Column_List">
         id, personId,typeId, minCount, maxCount
     </sql>
+    <select id="getList" resultType="com.ruoyi.system.vo.TFoundationConfigVO">
+        SELECT tfc.id, tfc.personId,tfc.typeId, tfc.minCount, tfc.maxCount,tfp.mealCount
+        FROM t_foundation_config tfc
+        LEFT JOIN t_foundation_person tfp ON tfp.id = tfc.personId
+    </select>
 
 </mapper>

--
Gitblit v1.7.1