xuhy
2024-08-27 96483f10fdb66727c3767826fcec6c99958e74b6
餐饮数据生成完成
8个文件已添加
15个文件已修改
471 ■■■■■ 已修改文件
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TDataGeneratorController.java 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TOrderMealController.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/resources/application-druid.yml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/domain/TDataGenerator.java 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/domain/TOrderMeal.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/dto/OrderMealGeneratorCountDTO.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/dto/TOrderMealDTO.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/mapper/TDataGeneratorMapper.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/mapper/TFoundationConfigMapper.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/service/TDataGeneratorService.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/service/TFoundationConfigService.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/service/TOrderMealService.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/service/TShopService.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TDataGeneratorServiceImpl.java 196 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TFoundationConfigServiceImpl.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TOrderMealServiceImpl.java 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TOrderSaleServiceImpl.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TOrderStockServiceImpl.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/vo/TFoundationConfigVO.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/vo/TOrderMealVO.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/resources/mapper/system/TDataGeneratorMapper.xml 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/resources/mapper/system/TFoundationConfigMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TDataGeneratorController.java
New file
@@ -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();
    }
}
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();
    }
}
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
ruoyi-system/src/main/java/com/ruoyi/system/domain/TDataGenerator.java
New file
@@ -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;
}
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;;
}
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;
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;
ruoyi-system/src/main/java/com/ruoyi/system/mapper/TDataGeneratorMapper.java
New file
@@ -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> {
}
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();
}
ruoyi-system/src/main/java/com/ruoyi/system/service/TDataGeneratorService.java
New file
@@ -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);
}
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();
}
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);
}
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);
}
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TDataGeneratorServiceImpl.java
New file
@@ -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));
    }
}
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();
    }
}
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) {
        // 循环待生成订单列表,添加到集合中,批量插入
    }
}
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);
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);
ruoyi-system/src/main/java/com/ruoyi/system/vo/TFoundationConfigVO.java
New file
@@ -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;
}
ruoyi-system/src/main/java/com/ruoyi/system/vo/TOrderMealVO.java
New file
@@ -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 {
}
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}
ruoyi-system/src/main/resources/mapper/system/TDataGeneratorMapper.xml
New file
@@ -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>
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>