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.*;
@@ -442,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);
    }
@@ -503,4 +505,31 @@
        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;
    }
}