xuhy
2024-09-05 8c2128317af3e5a2df32150f3684167925ee4508
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TDataGeneratorServiceImpl.java
@@ -13,10 +13,10 @@
import com.ruoyi.system.dto.OrderMealGeneratorDTO;
import com.ruoyi.system.dto.OrderSaleGeneratorDTO;
import com.ruoyi.system.mapper.TDataGeneratorMapper;
import com.ruoyi.system.query.TDataGeneratorQuery;
import com.ruoyi.system.query.*;
import com.ruoyi.system.service.*;
import com.ruoyi.system.vo.TDataGeneratorVO;
import com.ruoyi.system.vo.TFoundationConfigVO;
import com.ruoyi.system.vo.*;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -245,6 +245,7 @@
        // 添加销售订单数
        List<TOrderSale> orderSales = dto.getOrderSales();
        orderSales.forEach(e->e.setGeneratorId(dataGenerator.getId()));
        List<TOrderSaleGoods> orderSaleGoods = orderSales.stream().map(TOrderSale::getOrderSaleGoods).flatMap(Collection::stream).collect(Collectors.toList());
        // 生成进货数据
@@ -421,15 +422,15 @@
                tDataGeneratorVO.setTotalRevenue(money);
            }
        }else {
            List<TOrderStock> orderStocks = orderStockService.list(Wrappers.lambdaQuery(TOrderStock.class)
                    .in(TOrderStock::getGeneratorId, ids));
            List<Long> stockIds = orderStocks.stream().map(TOrderStock::getId).collect(Collectors.toList());
            List<TOrderStockGoods> stockGoods = orderStockGoodsService.list(Wrappers.lambdaQuery(TOrderStockGoods.class)
                    .in(TOrderStockGoods::getOrderId, stockIds));
            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));
            for (TDataGeneratorVO tDataGeneratorVO : list) {
                List<Long> collect = orderStocks.stream().filter(e -> e.getGeneratorId().equals(tDataGeneratorVO.getId())).map(TOrderStock::getId).collect(Collectors.toList());
                BigDecimal money = stockGoods.stream().filter(e -> collect.contains(e.getOrderId()))
                        .reduce(BigDecimal.ZERO, (x, y) -> x.add(y.getStockPrice().multiply(new BigDecimal(y.getStockCount()))), 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);
                tDataGeneratorVO.setTotalRevenue(money);
            }
        }
@@ -454,6 +455,82 @@
        }
    }
    @Override
    public TDataGeneratorMealDetailVO mealGeneratorDataDetail(TDataGeneratorMealQuery query) {
        // 查询餐饮数据生成详情
        TDataGenerator dataGenerator = this.getById(query.getGeneratorId());
        TDataGeneratorMealDetailVO data = new TDataGeneratorMealDetailVO();
        BeanUtils.copyProperties(dataGenerator,data);
        // 查询订单
        PageInfo<TOrderMealVO> pageInfo = orderMealService.pageListGenerator(query);
        data.setOrderMealList(pageInfo);
        // 统计支付金额
        Map<String, BigDecimal> map = orderMealService.getDataGeneratorMealDetail(query);
        BigDecimal money = map.get("moneyPay");
        BigDecimal card = map.get("cardPay");
        BigDecimal weiXin = map.get("weiXinPay");
        BigDecimal ali = map.get("aliPay");
        BigDecimal other = map.get("otherPay");
        data.setMoneyPayAmount(money);
        data.setCardPayAmount(card);
        data.setWeiXinPayAmount(weiXin);
        data.setAliPayAmount(ali);
        data.setOtherPayAmount(other);
        return data;
    }
    @Override
    public TDataGeneratorSaleDetailVO saleGeneratorDataDetail(TDataGeneratorSaleQuery query) {
        // 查询餐饮数据生成详情
        TDataGeneratorSaleDetailVO data = new TDataGeneratorSaleDetailVO();
        // 查询订单
        TOrderSaleQuery orderSaleQuery = new TOrderSaleQuery();
        orderSaleQuery.setTimeType(query.getTimeType());
        orderSaleQuery.setPayType(query.getPayType());
        orderSaleQuery.setOrderNum(query.getOrderNum());
        orderSaleQuery.setGeneratorId(query.getGeneratorId());
        PageInfo<TOrderSaleVO> pageInfo = orderSaleService.pageList(orderSaleQuery);
        data.setOrderMealList(pageInfo);
        // 统计支付金额
        Map<String, BigDecimal> map = orderSaleService.getDataGeneratorMealDetail(query);
        BigDecimal money = map.get("moneyPay");
        BigDecimal card = map.get("cardPay");
        BigDecimal weiXin = map.get("weiXinPay");
        BigDecimal ali = map.get("aliPay");
        BigDecimal other = map.get("otherPay");
        data.setMoneyPayAmount(money);
        data.setCardPayAmount(card);
        data.setWeiXinPayAmount(weiXin);
        data.setAliPayAmount(ali);
        data.setOtherPayAmount(other);
        return data;
    }
    @Override
    public TDataGeneratorStockDetailVO stockGeneratorDataDetail(TDataGeneratorStockQuery query) {
        // 查询餐饮数据生成详情
        TDataGeneratorStockDetailVO data = new TDataGeneratorStockDetailVO();
        // 查询订单
        TOrderStockQuery orderStockQuery = new TOrderStockQuery();
        orderStockQuery.setGeneratorId(query.getGeneratorId());
        orderStockQuery.setTimeType(query.getTimeType());
        orderStockQuery.setStockNum(query.getOrderNum());
        PageInfo<TOrderStockVO> pageInfo = orderStockService.pageList(orderStockQuery);
        data.setOrderStockVOList(pageInfo);
        // 统计支付金额
        Map<String, Object> map = orderStockService.getDataGeneratorStockDetail(query);
        Integer totalStock = Integer.parseInt(map.get("totalStock").toString());
        BigDecimal stockAmountSum = new BigDecimal(map.get("stockAmountSum").toString());
        data.setTotalStock(totalStock);
        data.setStockAmountSum(stockAmountSum);
        return data;
    }
    @Override
    public List<TOrderSaleVO> mealGeneratorExport(TDataGeneratorMealQuery query) {
        return null;
    }
    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());