xuhy
2024-09-07 97cf3094ce37ee629ca6b948a9317a7ed1796c18
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TDataGeneratorServiceImpl.java
@@ -4,6 +4,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.Constants;
import com.ruoyi.common.constant.OrderNumConstants;
import com.ruoyi.common.core.redis.RedisCache;
import com.ruoyi.common.exception.ServiceException;
@@ -19,6 +20,8 @@
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.math.RoundingMode;
@@ -62,6 +65,7 @@
    @Autowired
    private RedisCache redisCache;
    @Transactional(rollbackFor = Exception.class,propagation = Propagation.REQUIRED)
    @Override
    public void mealDataGenerator(OrderMealGeneratorDTO dto) {
        // 存储数据生成数据
@@ -102,7 +106,7 @@
                orderMeal.setMealType(1);
                orderMeal.setMealPerson(random);
                orderMeal.setMealTime(orderMealGeneratorCountDTO.getTime());
                orderMeal.setOrderNum(OrderNumConstants.MEAL + CodeGenerateUtils.generateOrderSn());
                orderMeal.setOrderNum(OrderNumConstants.MEAL + CodeGenerateUtils.generateVolumeSn());
                orderMeal.setStatus(2);
                List<TOrderMealGoods> orderMealGoods = new ArrayList<>();
                List<TFoundationConfigVO> foundationConfigVOS = foundationConfigs.stream().filter(e -> e.getMealCount().equals(random)).collect(Collectors.toList());
@@ -216,6 +220,7 @@
    }
    @Transactional(rollbackFor = Exception.class,propagation = Propagation.REQUIRED)
    @Override
    public void saleDataGenerator(OrderSaleGeneratorDTO dto) {
        // 查询上一次的数据生成时间
@@ -236,6 +241,7 @@
        dataGenerator.setStartTime(dto.getStartTime());
        dataGenerator.setEndTime(dto.getEndTime());
        dataGenerator.setStatus(2);
        dataGenerator.setShopId(dto.getShopId());
        dataGenerator.setOrderType(2);
        this.save(dataGenerator);
@@ -246,7 +252,10 @@
        // 添加销售订单数
        List<TOrderSale> orderSales = dto.getOrderSales();
        orderSales.forEach(e->e.setGeneratorId(dataGenerator.getId()));
        orderSales.forEach(e->{
            e.setGeneratorId(dataGenerator.getId());
            e.setOrderNum(OrderNumConstants.SALE + CodeGenerateUtils.generateVolumeSn());
        });
        List<TOrderSaleGoods> orderSaleGoods = orderSales.stream().map(TOrderSale::getOrderSaleGoods).flatMap(Collection::stream).collect(Collectors.toList());
        // 生成进货数据
@@ -275,7 +284,8 @@
                    tOrderStockGoods.setGoodsName(k);
                    tOrderStockGoods.setGoodsNum(v.get(0).getGoodsNum());
                    tOrderStockGoods.setCostPrice(v.get(0).getGoodsCostPrice());
                    tOrderStockGoods.setSalePrice(v.get(0).getSalePrice());
                    tOrderStockGoods.setSalePrice(v.get(0).getGoodsSalePrice());
                    tOrderStockGoods.setThisSalePrice(v.get(0).getThisSalePrice());
                    tOrderStockGoods.setGoodsPicture(v.get(0).getGoodsPicture());
                    tOrderStockGoods.setStockCount(v.stream().mapToInt(TOrderSaleGoods::getGoodsCount).sum());
                    orderStockGoods.add(tOrderStockGoods);
@@ -310,7 +320,8 @@
                    tOrderStockGoods.setGoodsName(k);
                    tOrderStockGoods.setGoodsNum(v.get(0).getGoodsNum());
                    tOrderStockGoods.setCostPrice(v.get(0).getGoodsCostPrice());
                    tOrderStockGoods.setSalePrice(v.get(0).getSalePrice());
                    tOrderStockGoods.setSalePrice(v.get(0).getGoodsSalePrice());
                    tOrderStockGoods.setThisSalePrice(v.get(0).getThisSalePrice());
                    tOrderStockGoods.setGoodsPicture(v.get(0).getGoodsPicture());
                    tOrderStockGoods.setStockCount(v.stream().mapToInt(TOrderSaleGoods::getGoodsCount).sum());
                    orderStockGoods.add(tOrderStockGoods);
@@ -338,7 +349,8 @@
                    tOrderStockGoods.setGoodsName(k);
                    tOrderStockGoods.setGoodsNum(v.get(0).getGoodsNum());
                    tOrderStockGoods.setCostPrice(v.get(0).getGoodsCostPrice());
                    tOrderStockGoods.setSalePrice(v.get(0).getSalePrice());
                    tOrderStockGoods.setSalePrice(v.get(0).getGoodsSalePrice());
                    tOrderStockGoods.setThisSalePrice(v.get(0).getThisSalePrice());
                    tOrderStockGoods.setGoodsPicture(v.get(0).getGoodsPicture());
                    tOrderStockGoods.setStockCount(v.stream().mapToInt(TOrderSaleGoods::getGoodsCount).sum());
                    orderStockGoods1.add(tOrderStockGoods);
@@ -366,7 +378,8 @@
                    tOrderStockGoods.setGoodsName(k);
                    tOrderStockGoods.setGoodsNum(v.get(0).getGoodsNum());
                    tOrderStockGoods.setCostPrice(v.get(0).getGoodsCostPrice());
                    tOrderStockGoods.setSalePrice(v.get(0).getSalePrice());
                    tOrderStockGoods.setSalePrice(v.get(0).getGoodsSalePrice());
                    tOrderStockGoods.setThisSalePrice(v.get(0).getThisSalePrice());
                    tOrderStockGoods.setGoodsPicture(v.get(0).getGoodsPicture());
                    tOrderStockGoods.setStockCount(v.stream().mapToInt(TOrderSaleGoods::getGoodsCount).sum());
                    orderStockGoods.add(tOrderStockGoods);
@@ -393,7 +406,10 @@
            orderSale.getOrderSaleGoods().forEach(e->e.setOrderId(orderSale.getId()));
        }
        List<TGoodsType> list = goodsTypeService.list();
        orderSaleGoods.forEach(e->e.setTypeName(list.stream().filter(m->m.getId().equals(e.getTypeId())).findFirst().get().getTypeName()));
//        orderSaleGoods.forEach(e->e.setTypeName(list.stream().filter(m->m.getId().equals(e.getTypeId())).findFirst().get().getTypeName()));
        orderSaleGoods.forEach(e->{
            e.setId(null);
        });
        orderSaleGoodsService.saveBatch(orderSaleGoods);
        // 添加数据
        stockList.forEach(e->e.setShopId(dataGenerator.getShopId()));
@@ -425,13 +441,14 @@
        }else {
            List<TOrderSale> orderSales = orderSaleService.list(Wrappers.lambdaQuery(TOrderSale.class)
                    .in(TOrderSale::getGeneratorId, ids));
            List<Long> saleIds = orderSales.stream().map(TOrderSale::getId).collect(Collectors.toList());
            List<TOrderSaleGoods> orderSaleGoods = orderSaleGoodsService.list(Wrappers.lambdaQuery(TOrderSaleGoods.class)
                    .in(TOrderSaleGoods::getOrderId, saleIds));
//            List<Long> saleIds = orderSales.stream().map(TOrderSale::getId).collect(Collectors.toList());
//            List<TOrderSaleGoods> orderSaleGoods = orderSaleGoodsService.list(Wrappers.lambdaQuery(TOrderSaleGoods.class)
//                    .in(TOrderSaleGoods::getOrderId, saleIds));
            for (TDataGeneratorVO tDataGeneratorVO : list) {
                List<Long> collect = orderSales.stream().filter(e -> e.getGeneratorId().equals(tDataGeneratorVO.getId())).map(TOrderSale::getId).collect(Collectors.toList());
                BigDecimal money = orderSaleGoods.stream().filter(e -> collect.contains(e.getOrderId()))
                        .reduce(BigDecimal.ZERO, (x, y) -> x.add(y.getGoodsCostPrice().multiply(new BigDecimal(y.getGoodsCount()))), BigDecimal::add);
//                List<Long> collect = orderSales.stream().filter(e -> e.getGeneratorId().equals(tDataGeneratorVO.getId())).map(TOrderSale::getId).collect(Collectors.toList());
//                BigDecimal money = orderSaleGoods.stream().filter(e -> collect.contains(e.getOrderId()))
//                        .reduce(BigDecimal.ZERO, (x, y) -> x.add(y.getGoodsCostPrice().multiply(new BigDecimal(y.getGoodsCount()))), BigDecimal::add);
                BigDecimal money = orderSales.stream().map(TOrderSale::getPayMoney).reduce(BigDecimal::add).get();
                tDataGeneratorVO.setTotalRevenue(money);
            }
        }