package com.ruoyi.system.service.impl; 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.enums.BoardEnum; import com.ruoyi.common.exception.ServiceException; import com.ruoyi.common.utils.CodeGenerateUtils; import com.ruoyi.common.utils.DateUtils; 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.*; import com.ruoyi.system.service.*; import com.ruoyi.system.vo.*; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; import java.math.BigDecimal; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.temporal.ChronoUnit; import java.util.*; import java.util.stream.Collectors; /** *

* 餐饮订单 服务实现类 *

* * @author xiaochen * @since 2024-08-14 */ @Service public class TOrderMealServiceImpl extends ServiceImpl implements TOrderMealService { @Autowired private TOrderMealGoodsService orderMealGoodsService; @Autowired private TOrderMealGoodsMapper orderMealGoodsMapper; @Autowired private TOrderRemarkService orderRemarkService; @Autowired private TBoardService boardService; @Autowired private TGoodsTypeService goodsTypeService; @Autowired private TGoodsService goodsService; @Override public void add(TOrderMealDTO dto) { TOrderMeal orderMeal = this.getById(dto.getId()); if(Objects.isNull(orderMeal)){ throw new ServiceException("该订单不存在"); } if(StringUtils.isNotEmpty(dto.getRemark())){ if(StringUtils.isNotEmpty(orderMeal.getRemark())){ orderMeal.setRemark(orderMeal.getRemark()+dto.getRemark()); }else { orderMeal.setRemark(dto.getRemark()); } } orderMeal.setMealType(dto.getMealType()); orderMeal.setMealPerson(dto.getMealPerson()); orderMeal.setMealTime(dto.getMealTime()); // 查询菜品分类 List list1 = goodsTypeService.list(); // 查询餐桌 TBoard board = boardService.getById(orderMeal.getBoardId()); if(!CollectionUtils.isEmpty(dto.getMealOrderGoodsDTOS())){ board.setStatus(BoardEnum.DURING_MEAL.getCode()); boardService.updateById(board); // 订单金额,订单编号 // String orderNum = OrderNumConstants.MEAL+CodeGenerateUtils.generateVolumeSn(); // dto.setOrderNum(orderNum); List orderMealGoods = new ArrayList<>(); // 查询商品 List mealOrderGoodsDTOS = dto.getMealOrderGoodsDTOS(); List goodsIds = mealOrderGoodsDTOS.stream().map(MealOrderGoodsDTO::getGoodsId).collect(Collectors.toList()); List list = goodsService.list(Wrappers.lambdaQuery(TGoods.class) .in(TGoods::getId, goodsIds)); // 查询已存在的菜品 List list2 = orderMealGoodsService.list(Wrappers.lambdaQuery(TOrderMealGoods.class) .in(TOrderMealGoods::getOrderId, dto.getId())); BigDecimal money = BigDecimal.ZERO; for (MealOrderGoodsDTO mealOrderGoodsDTO : mealOrderGoodsDTOS) { TOrderMealGoods tOrderMealGoods = list2.stream().filter(item1 -> item1.getGoodsId().equals(mealOrderGoodsDTO.getGoodsId())).findFirst().orElse(null); if(Objects.nonNull(tOrderMealGoods)){ tOrderMealGoods.setGoodsCount(tOrderMealGoods.getGoodsCount()+mealOrderGoodsDTO.getGoodsCount()); orderMealGoods.add(tOrderMealGoods); money = money.add(tOrderMealGoods.getGoodsSalePrice().multiply(new BigDecimal(mealOrderGoodsDTO.getGoodsCount()))); continue; } for (TGoods goods : list) { if(goods.getId().equals(mealOrderGoodsDTO.getGoodsId())){ TOrderMealGoods orderMealGood = new TOrderMealGoods(); orderMealGood.setGoodsName(goods.getGoodsName()); orderMealGood.setGoodsNum(goods.getGoodsNum()); orderMealGood.setGoodsPicture(goods.getGoodsPicture()); orderMealGood.setGoodsCount(mealOrderGoodsDTO.getGoodsCount()); orderMealGood.setGoodsSalePrice(goods.getSalePrice()); orderMealGood.setCostPrice(goods.getCostPrice()); orderMealGood.setTypeId(goods.getTypeId()); orderMealGood.setGoodsId(goods.getId()); orderMealGood.setTypeName(list1.stream().filter(item2 -> item2.getId().equals(goods.getTypeId())).findFirst().get().getTypeName()); orderMealGoods.add(orderMealGood); money = money.add(goods.getSalePrice().multiply(new BigDecimal(mealOrderGoodsDTO.getGoodsCount()))); } } } // 添加菜品 for (TOrderMealGoods orderMealGood : orderMealGoods) { orderMealGood.setOrderId(dto.getId()); } orderMealGoodsService.saveOrUpdateBatch(orderMealGoods); BigDecimal orderMoney = orderMeal.getOrderMoney().add(money); orderMeal.setOrderMoney(orderMoney); this.updateById(orderMeal); // 添加备注 // TOrderRemark tOrderRemark = new TOrderRemark(); // tOrderRemark.setOrderId(dto.getId()); // tOrderRemark.setRemark(dto.getRemark()); // tOrderRemark.setCreateTime(LocalDateTime.now()); // orderRemarkService.save(tOrderRemark); } } @Override public void addDish(AddDishDTO dto) { List orderMealGoods = new ArrayList<>(); // 查询菜品分类 List list1 = goodsTypeService.list(); // 查询商品 List goodsIds = dto.getMealOrderGoodsDTOS().stream().map(MealOrderGoodsDTO::getGoodsId).collect(Collectors.toList()); List list = orderMealGoodsService.list(Wrappers.lambdaQuery(TOrderMealGoods.class) .in(TOrderMealGoods::getId, goodsIds)); dto.getMealOrderGoodsDTOS().forEach(item -> { list.stream().filter(item1 -> item1.getId().equals(item.getGoodsId())).findFirst().ifPresent(item1 -> { TOrderMealGoods orderMealGood = new TOrderMealGoods(); orderMealGood.setGoodsName(item1.getGoodsName()); orderMealGood.setGoodsNum(item1.getGoodsNum()); orderMealGood.setGoodsPicture(item1.getGoodsPicture()); orderMealGood.setGoodsCount(item.getGoodsCount()); orderMealGood.setGoodsSalePrice(item1.getGoodsSalePrice().multiply(new BigDecimal(item.getGoodsCount()))); orderMealGood.setTypeId(item1.getTypeId()); orderMealGood.setGoodsId(item1.getId()); orderMealGood.setTypeName(list1.stream().filter(item2 -> item2.getId().equals(item1.getTypeId())).findFirst().get().getTypeName()); orderMealGoods.add(orderMealGood); }); }); // 添加菜品 orderMealGoods.forEach(item -> { item.setOrderId(dto.getOrderId()); }); orderMealGoodsService.saveBatch(orderMealGoods); // 添加备注 // TOrderRemark tOrderRemark = new TOrderRemark(); // tOrderRemark.setOrderId(dto.getOrderId()); // tOrderRemark.setRemark(dto.getRemark()); // tOrderRemark.setCreateTime(LocalDateTime.now()); // orderRemarkService.save(tOrderRemark); } @Override public void checkout(CheckoutDTO dto) { TOrderMeal orderMeal = this.getById(dto.getOrderId()); orderMeal.setPayType(dto.getPayType()); orderMeal.setPayMoney(dto.getPayMoney()); orderMeal.setStatus(2); this.updateById(orderMeal); TBoard board = boardService.getById(orderMeal.getBoardId()); board.setStatus(BoardEnum.FREE.getCode()); boardService.updateById(board); } @Override public PageInfo pageList(TOrderMealQuery query) { if(StringUtils.isEmpty(query.getStartTime()) && StringUtils.isEmpty(query.getEndTime())){ if(Objects.nonNull(query.getTimeType())){ LocalDateTime startTime = null; LocalDateTime endTime = null; switch (query.getTimeType()){ case 1: // 今日 startTime = DateUtils.getDayStart(LocalDateTime.now()); endTime = DateUtils.getDayEnd(LocalDateTime.now()); break; case 2: // 昨日 startTime = DateUtils.getDayStart(LocalDateTime.now().minusDays(1)); endTime = DateUtils.getDayEnd(LocalDateTime.now().minusDays(1)); break; case 3: // 近7天 startTime = DateUtils.getDayStart(LocalDateTime.now().minusDays(7)); endTime = DateUtils.getDayEnd(LocalDateTime.now()); break; case 4: // 近30天 startTime = DateUtils.getDayStart(LocalDateTime.now().minusDays(30)); endTime = DateUtils.getDayEnd(LocalDateTime.now()); break; } query.setStartTime(DateUtils.localDateTimeToDate(startTime)); query.setEndTime(DateUtils.localDateTimeToDate(endTime)); } } PageInfo pageInfo = new PageInfo<>(query.getPageNum(),query.getPageSize()); List list = this.baseMapper.pageList(query,pageInfo); if(CollectionUtils.isEmpty(list)){ return new PageInfo<>(); } List ids = list.stream().map(TOrderMealVO::getId).collect(Collectors.toList()); List list1 = orderMealGoodsService.list(Wrappers.lambdaQuery(TOrderMealGoods.class) .in(TOrderMealGoods::getOrderId, ids)); // 查询商品信息 for (TOrderMealVO tOrderMealVO : list) { List collect = list1.stream().filter(e -> e.getOrderId().equals(tOrderMealVO.getId())).collect(Collectors.toList()); tOrderMealVO.setOrderMealGoods(collect); if(!CollectionUtils.isEmpty(collect)){ Map> map = collect.stream().collect(Collectors.groupingBy(TOrderMealGoods::getTypeName)); List 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(","))); }); tOrderMealVO.setGoodsList(goodsList); } } pageInfo.setRecords(list); return pageInfo; } @Override public AmountSumVO amountSum(TOrderMealQuery query) { if(StringUtils.isEmpty(query.getStartTime()) && StringUtils.isEmpty(query.getEndTime())){ if(Objects.nonNull(query.getTimeType())){ LocalDateTime startTime = null; LocalDateTime endTime = null; switch (query.getTimeType()){ case 1: // 今日 startTime = DateUtils.getDayStart(LocalDateTime.now()); endTime = DateUtils.getDayEnd(LocalDateTime.now()); break; case 2: // 昨日 startTime = DateUtils.getDayStart(LocalDateTime.now().minusDays(1)); endTime = DateUtils.getDayEnd(LocalDateTime.now().minusDays(1)); break; case 3: // 近7天 startTime = DateUtils.getDayStart(LocalDateTime.now().minusDays(7)); endTime = DateUtils.getDayEnd(LocalDateTime.now()); break; case 4: // 近30天 startTime = DateUtils.getDayStart(LocalDateTime.now().minusDays(30)); endTime = DateUtils.getDayEnd(LocalDateTime.now()); break; } query.setStartTime(DateUtils.localDateTimeToDate(startTime)); query.setEndTime(DateUtils.localDateTimeToDate(endTime)); } } return this.baseMapper.amountSum(query); } @Override public SalesVolumeVO salesVolume(TDataStatisticsQuery query) { SalesVolumeVO salesVolumeVO = this.baseMapper.salesVolume(query); salesVolumeVO.setSalesVolumeTotal(salesVolumeVO.getWeiXinPay().add(salesVolumeVO.getOtherPay()).add(salesVolumeVO.getCardPay()) .add(salesVolumeVO.getMoneyPay()).add(salesVolumeVO.getAliPay())); // 查询成本 List list = this.list(Wrappers.lambdaQuery(TOrderMeal.class) .eq(TOrderMeal::getShopId, query.getShopId()) .ge(TOrderMeal::getMealTime, query.getStartTime()) .le(TOrderMeal::getMealTime, query.getEndTime()) .eq(TOrderMeal::getStatus,2)); List ids = list.stream().map(TOrderMeal::getId).collect(Collectors.toList()); if(!CollectionUtils.isEmpty(ids)){ BigDecimal costTotal = orderMealGoodsService.costTotal(ids); salesVolumeVO.setCostTotal(costTotal); salesVolumeVO.setProfitTotal(salesVolumeVO.getSalesVolumeTotal().subtract(costTotal)); } return salesVolumeVO; } @Override public PageInfo salesRanking(TDataStatisticsQuery query) { PageInfo pageInfo = new PageInfo<>(query.getPageNum(),query.getPageSize()); List list = this.list(Wrappers.lambdaQuery(TOrderMeal.class) .eq(TOrderMeal::getShopId, query.getShopId()) .between(TOrderMeal::getMealTime, query.getStartTime(), query.getEndTime())); List ids = list.stream().map(TOrderMeal::getId).collect(Collectors.toList()); if(CollectionUtils.isEmpty(ids)){ return new PageInfo<>(); } List salesRankingVOS = orderMealGoodsMapper.salesRanking(ids, pageInfo); pageInfo.setRecords(salesRankingVOS); return pageInfo; } @Override public List exportOrderMeal(TOrderMealQuery query) { if(Objects.nonNull(query.getTimeType())){ LocalDateTime startTime = null; LocalDateTime endTime = null; switch (query.getTimeType()){ case 1: // 今日 startTime = DateUtils.getDayStart(LocalDateTime.now()); endTime = DateUtils.getDayEnd(LocalDateTime.now()); break; case 2: // 昨日 startTime = DateUtils.getDayStart(LocalDateTime.now().minusDays(1)); endTime = DateUtils.getDayEnd(LocalDateTime.now().minusDays(1)); break; case 3: // 近7天 startTime = DateUtils.getDayStart(LocalDateTime.now().minusDays(7)); endTime = DateUtils.getDayEnd(LocalDateTime.now()); break; case 4: // 近30天 startTime = DateUtils.getDayStart(LocalDateTime.now().minusDays(30)); endTime = DateUtils.getDayEnd(LocalDateTime.now()); break; } query.setStartTime(DateUtils.localDateTimeToDate(startTime)); query.setEndTime(DateUtils.localDateTimeToDate(endTime)); } List list = this.baseMapper.exportOrderMeal(query); List ids = list.stream().map(TOrderMealVO::getId).collect(Collectors.toList()); if(!CollectionUtils.isEmpty(ids)){ List list1 = orderMealGoodsService.list(Wrappers.lambdaQuery(TOrderMealGoods.class) .in(TOrderMealGoods::getOrderId,ids)); // 查询商品信息 for (TOrderMealVO tOrderMealVO : list) { List collect = list1.stream().filter(e -> e.getOrderId().equals(tOrderMealVO.getId())).collect(Collectors.toList()); tOrderMealVO.setOrderMealGoods(collect); Map> map = collect.stream().collect(Collectors.groupingBy(TOrderMealGoods::getTypeName)); List 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(","))); }); tOrderMealVO.setGoodsList(goodsList); } } return list; } @Override public List orderingTrends(TDataStatisticsQuery query) { List orderTrendsVOS = this.baseMapper.orderingTrends(query); LocalDate localDate = DateUtils.stringToLocalDateTime(query.getEndTime()).toLocalDate(); for (int i = 0; i < 7; i++) { if(i == 0){ LocalDate finalLocalDate = localDate; OrderTrendsVO orderTrendsVO = orderTrendsVOS.stream().filter(e -> finalLocalDate.compareTo(DateUtils.stringToLocalDate(e.getDayTime())) == 0).findFirst().orElse(null); if(Objects.isNull(orderTrendsVO)){ orderTrendsVO = new OrderTrendsVO(); orderTrendsVO.setDayTime(DateUtils.localDateToString(localDate)); orderTrendsVO.setOrderCount(0); orderTrendsVOS.add(orderTrendsVO); } }else { localDate = localDate.minusDays(1); LocalDate finalLocalDate1 = localDate; OrderTrendsVO orderTrendsVO = orderTrendsVOS.stream().filter(e -> finalLocalDate1.compareTo(DateUtils.stringToLocalDate(e.getDayTime())) == 0).findFirst().orElse(null); if(Objects.isNull(orderTrendsVO)){ orderTrendsVO = new OrderTrendsVO(); orderTrendsVO.setDayTime(DateUtils.localDateToString(finalLocalDate1)); orderTrendsVO.setOrderCount(0); orderTrendsVOS.add(orderTrendsVO); } } } return orderTrendsVOS.stream().sorted(Comparator.comparing(OrderTrendsVO::getDayTime)).collect(Collectors.toList()); } @Override public List personnelStatistics(TDataStatisticsQuery query) { return this.baseMapper.personnelStatistics(query); } @Override public PageInfo pageListGenerator(TDataGeneratorMealQuery query) { PageInfo pageInfo = new PageInfo<>(query.getPageNum(),query.getPageSize()); List list = this.baseMapper.pageListGenerator(query,pageInfo); // 查询商品信息 for (TOrderMealVO tOrderMealVO : list) { List list1 = orderMealGoodsService.list(Wrappers.lambdaQuery(TOrderMealGoods.class) .eq(TOrderMealGoods::getOrderId, tOrderMealVO.getId())); tOrderMealVO.setOrderMealGoods(list1); Map> map = list1.stream().collect(Collectors.groupingBy(TOrderMealGoods::getTypeName)); List 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(","))); }); tOrderMealVO.setGoodsList(goodsList); } pageInfo.setRecords(list); return pageInfo; } @Override public Map getDataGeneratorMealDetail(TDataGeneratorMealQuery query) { return this.baseMapper.getDataGeneratorMealDetail(query); } @Override public List mealGeneratorExport(TDataGeneratorMealQuery query) { List list = this.baseMapper.mealGeneratorExport(query); List ids = list.stream().map(TOrderMealVO::getId).collect(Collectors.toList()); List list1 = orderMealGoodsService.list(Wrappers.lambdaQuery(TOrderMealGoods.class) .in(TOrderMealGoods::getOrderId,ids)); // 查询商品信息 for (TOrderMealVO tOrderMealVO : list) { List collect = list1.stream().filter(e -> e.getOrderId().equals(tOrderMealVO.getId())).collect(Collectors.toList()); tOrderMealVO.setOrderMealGoods(collect); Map> map = collect.stream().collect(Collectors.groupingBy(TOrderMealGoods::getTypeName)); List 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(","))); }); tOrderMealVO.setGoodsList(goodsList); } return list; } @Override public void startMeal(TOrderMeal dto) { // 查询餐桌 TBoard board = boardService.getById(dto.getBoardId()); // 开台 board.setStatus(BoardEnum.WAITING_ORDER.getCode()); boardService.updateById(board); dto.setMealTime(dto.getMealTime()); dto.setOrderNum(OrderNumConstants.MEAL + CodeGenerateUtils.generateVolumeSn()); this.save(dto); } @Override public List mealGeneratorListExport(TDataGeneratorQuery query) { List list = this.baseMapper.mealGeneratorListExport(query); List ids = list.stream().map(TDataGeneratorVO::getId).collect(Collectors.toList()); if(CollectionUtils.isEmpty(ids)){ return new ArrayList<>(); } List orderMeals = this.list(Wrappers.lambdaQuery(TOrderMeal.class) .in(TOrderMeal::getGeneratorId, ids)); List mealIds = orderMeals.stream().map(TOrderMeal::getId).collect(Collectors.toList()); if(!CollectionUtils.isEmpty(mealIds)){ List mealGoods = orderMealGoodsService.list(Wrappers.lambdaQuery(TOrderMealGoods.class) .in(TOrderMealGoods::getOrderId, mealIds)); for (TDataGeneratorVO tDataGeneratorVO : list) { List collect = orderMeals.stream().filter(e -> e.getGeneratorId().equals(tDataGeneratorVO.getId())).map(TOrderMeal::getId).collect(Collectors.toList()); BigDecimal money = mealGoods.stream().filter(e -> collect.contains(e.getOrderId())) .reduce(BigDecimal.ZERO, (x, y) -> x.add(y.getGoodsSalePrice().multiply(new BigDecimal(y.getGoodsCount()))), BigDecimal::add); tDataGeneratorVO.setTotalRevenue(money); } } return list; } @Override public ProfitDetailsVO profitDetails(ProfitDetailsQuery query) { ProfitDetailsVO profitDetailsVO = new ProfitDetailsVO(); // 查询商品盈利明细 PageInfo pageInfo = new PageInfo<>(query.getPageNum(),query.getPageSize()); List list = this.baseMapper.profitDetails(query,pageInfo); pageInfo.setRecords(list); profitDetailsVO.setGoodsProfitVOS(pageInfo); // 统计商品金额 Map map = this.baseMapper.profitDetailsStatistics(query); profitDetailsVO.setTotalProfits(new BigDecimal(map.get("totalProfits").toString())); profitDetailsVO.setTotalCosts(new BigDecimal(map.get("totalCosts").toString())); profitDetailsVO.setTotalSales(new BigDecimal(map.get("totalSales").toString())); return profitDetailsVO; } @Override public List profitDetailsExport(ProfitDetailsQuery query) { return this.baseMapper.profitDetailsExport(query); } @Override public void deleteByShopId(Long shopId) { this.baseMapper.deleteByShopId(shopId); } @Override public Map getDataGeneratorMealDetailOrderMoney(TDataGeneratorMealQuery query) { return this.baseMapper.getDataGeneratorMealDetailOrderMoney(query); } @Override public SumGeneratorClient sumExport(ProfitDetailsQuery query) { List 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; } }