xuhy
3 天以前 508f3e225df87e0da974424981e7782fc5ce875c
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TOrderMealServiceImpl.java
@@ -11,6 +11,8 @@
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.system.domain.*;
import com.ruoyi.system.dto.*;
import com.ruoyi.system.export.SumGeneratorClient;
import com.ruoyi.system.export.SumGeneratorDetailClient;
import com.ruoyi.system.mapper.TOrderMealGoodsMapper;
import com.ruoyi.system.mapper.TOrderMealMapper;
import com.ruoyi.system.query.*;
@@ -212,13 +214,18 @@
        }
        PageInfo<TOrderMealVO> pageInfo = new PageInfo<>(query.getPageNum(),query.getPageSize());
        List<TOrderMealVO> list = this.baseMapper.pageList(query,pageInfo);
        if(CollectionUtils.isEmpty(list)){
            return new PageInfo<>();
        }
        List<Long> ids = list.stream().map(TOrderMealVO::getId).collect(Collectors.toList());
        List<TOrderMealGoods> list1 = orderMealGoodsService.list(Wrappers.lambdaQuery(TOrderMealGoods.class)
                .in(TOrderMealGoods::getOrderId, ids));
        // 查询商品信息
        for (TOrderMealVO tOrderMealVO : list) {
            List<TOrderMealGoods> list1 = orderMealGoodsService.list(Wrappers.lambdaQuery(TOrderMealGoods.class)
                    .eq(TOrderMealGoods::getOrderId, tOrderMealVO.getId()));
            tOrderMealVO.setOrderMealGoods(list1);
            if(!CollectionUtils.isEmpty(list1)){
                Map<String, List<TOrderMealGoods>> map = list1.stream().collect(Collectors.groupingBy(TOrderMealGoods::getTypeName));
            List<TOrderMealGoods> collect = list1.stream().filter(e -> e.getOrderId().equals(tOrderMealVO.getId())).collect(Collectors.toList());
            tOrderMealVO.setOrderMealGoods(collect);
            if(!CollectionUtils.isEmpty(collect)){
                Map<String, List<TOrderMealGoods>> map = collect.stream().collect(Collectors.groupingBy(TOrderMealGoods::getTypeName));
                List<String> goodsList = new ArrayList<>();
                map.forEach((k,v)->{
                    goodsList.add(k+":"+v.stream().map(item->item.getGoodsName()+" "+(item.getGoodsSalePrice().multiply(new BigDecimal(item.getGoodsCount())))).collect(Collectors.joining(",")));
@@ -437,7 +444,7 @@
        // 开台
        board.setStatus(BoardEnum.WAITING_ORDER.getCode());
        boardService.updateById(board);
        dto.setMealTime(LocalDate.now());
        dto.setMealTime(dto.getMealTime());
        dto.setOrderNum(OrderNumConstants.MEAL + CodeGenerateUtils.generateVolumeSn());
        this.save(dto);
    }
@@ -488,4 +495,41 @@
        return this.baseMapper.profitDetailsExport(query);
    }
    @Override
    public void deleteByShopId(Long shopId) {
        this.baseMapper.deleteByShopId(shopId);
    }
    @Override
    public Map<String, Double> getDataGeneratorMealDetailOrderMoney(TDataGeneratorMealQuery query) {
        return this.baseMapper.getDataGeneratorMealDetailOrderMoney(query);
    }
    @Override
    public SumGeneratorClient sumExport(ProfitDetailsQuery query) {
        List<SumGeneratorDetailClient> sumGeneratorDetailClient = this.baseMapper.sumExport(query);
        for (SumGeneratorDetailClient generatorDetailClient : sumGeneratorDetailClient) {
            generatorDetailClient.setSingleAmount(generatorDetailClient.getActualAmount().divide(new BigDecimal(generatorDetailClient.getOrderCount()),2,BigDecimal.ROUND_DOWN));
            generatorDetailClient.setPerAmount(generatorDetailClient.getActualAmount().divide(new BigDecimal(generatorDetailClient.getPerCount()),2,BigDecimal.ROUND_DOWN));
        }
        SumGeneratorClient sumGeneratorClient = new SumGeneratorClient();
        if(!CollectionUtils.isEmpty(sumGeneratorDetailClient)){
            sumGeneratorClient.setActualAmountSum(sumGeneratorDetailClient.stream().map(SumGeneratorDetailClient::getActualAmount).reduce(BigDecimal::add).get());
            sumGeneratorClient.setOrderCountSum(sumGeneratorDetailClient.stream().map(SumGeneratorDetailClient::getOrderCount).reduce(Integer::sum).get());
            sumGeneratorClient.setSingleAmountSum(sumGeneratorDetailClient.stream().map(SumGeneratorDetailClient::getSingleAmount).reduce(BigDecimal::add).get());
            sumGeneratorClient.setPerCountSum(sumGeneratorDetailClient.stream().map(SumGeneratorDetailClient::getPerCount).reduce(Integer::sum).get());
            sumGeneratorClient.setPerAmountSum(sumGeneratorDetailClient.stream().map(SumGeneratorDetailClient::getPerAmount).reduce(BigDecimal::add).get());
            sumGeneratorClient.setAllMoney(sumGeneratorDetailClient.stream().map(SumGeneratorDetailClient::getActualAmount).reduce(BigDecimal::add).get());
            sumGeneratorClient.setSingleAvgAmount(sumGeneratorClient.getAllMoney().divide(new BigDecimal(sumGeneratorClient.getPerCountSum()),2,BigDecimal.ROUND_DOWN));
            sumGeneratorClient.setPerCapitaAmount(sumGeneratorClient.getAllMoney().divide(new BigDecimal(sumGeneratorClient.getOrderCountSum()),2,BigDecimal.ROUND_DOWN));
        }
        sumGeneratorClient.setOrderStatistics(sumGeneratorDetailClient);
        return sumGeneratorClient;
    }
}