| | |
| | | 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; |
| | | |
| | |
| | | orderMeal.setMealType(dto.getMealType()); |
| | | orderMeal.setMealPerson(dto.getMealPerson()); |
| | | orderMeal.setMealTime(dto.getMealTime()); |
| | | orderMeal.setOrderMoney(dto.getOrderMoney()); |
| | | |
| | | // 查询菜品分类 |
| | | List<TGoodsType> list1 = goodsTypeService.list(); |
| | |
| | | List<Long> goodsIds = dto.getMealOrderGoodsDTOS().stream().map(MealOrderGoodsDTO::getGoodsId).collect(Collectors.toList()); |
| | | List<TGoods> list = goodsService.list(Wrappers.lambdaQuery(TGoods.class) |
| | | .in(TGoods::getId, goodsIds)); |
| | | // 查询已存在的菜品 |
| | | List<TOrderMealGoods> list2 = orderMealGoodsService.list(Wrappers.lambdaQuery(TOrderMealGoods.class) |
| | | .in(TOrderMealGoods::getOrderId, dto.getId())); |
| | | dto.getMealOrderGoodsDTOS().forEach(item -> { |
| | | if(CollectionUtils.isEmpty(list2)){ |
| | | list.stream().filter(item1 -> item1.getId().equals(item.getGoodsId())).findFirst().ifPresent(item1 -> { |
| | | TOrderMealGoods orderMealGood = new TOrderMealGoods(); |
| | | orderMealGood.setGoodsName(item1.getGoodsName()); |
| | |
| | | orderMealGood.setTypeName(list1.stream().filter(item2 -> item2.getId().equals(item1.getTypeId())).findFirst().get().getTypeName()); |
| | | orderMealGoods.add(orderMealGood); |
| | | }); |
| | | }else { |
| | | list2.stream().filter(item1 -> item1.getGoodsId().equals(item.getGoodsId())).findFirst().ifPresent(item1 -> { |
| | | item1.setGoodsCount(item1.getGoodsCount()+item.getGoodsCount()); |
| | | orderMealGoods.add(item1); |
| | | }); |
| | | } |
| | | }); |
| | | BigDecimal orderMoney = BigDecimal.ZERO; |
| | | // 添加菜品 |
| | |
| | | orderMealGood.setOrderId(dto.getId()); |
| | | orderMoney = orderMoney.add(orderMealGood.getGoodsSalePrice().multiply(new BigDecimal(orderMealGood.getGoodsCount()))); |
| | | } |
| | | orderMealGoodsService.saveBatch(orderMealGoods); |
| | | orderMealGoodsService.saveOrUpdateBatch(orderMealGoods); |
| | | orderMeal.setOrderMoney(orderMoney); |
| | | this.updateById(orderMeal); |
| | | // 添加备注 |
| | |
| | | List<TOrderMeal> list = this.list(Wrappers.lambdaQuery(TOrderMeal.class) |
| | | .eq(TOrderMeal::getShopId, query.getShopId()) |
| | | .ge(TOrderMeal::getMealTime, query.getStartTime()) |
| | | .le(TOrderMeal::getMealTime, query.getEndTime())); |
| | | .le(TOrderMeal::getMealTime, query.getEndTime()) |
| | | .eq(TOrderMeal::getStatus,2)); |
| | | List<Long> ids = list.stream().map(TOrderMeal::getId).collect(Collectors.toList()); |
| | | if(!CollectionUtils.isEmpty(ids)){ |
| | | BigDecimal costTotal = orderMealGoodsService.costTotal(ids); |
| | |
| | | |
| | | @Override |
| | | public List<OrderTrendsVO> orderingTrends(TDataStatisticsQuery query) { |
| | | return this.baseMapper.orderingTrends(query); |
| | | List<OrderTrendsVO> orderTrendsVOS = this.baseMapper.orderingTrends(query); |
| | | LocalDate localDate = LocalDate.now(); |
| | | for (int i = 0; i < 7; i++) { |
| | | if(i == 0){ |
| | | LocalDate finalLocalDate = localDate; |
| | | OrderTrendsVO orderTrendsVO = orderTrendsVOS.stream().filter(e -> DateUtils.stringToLocalDate(e.getDayTime()).compareTo(finalLocalDate) == 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 -> DateUtils.stringToLocalDate(e.getDayTime()).compareTo(finalLocalDate1) == 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 |