From 842947e6ecf0bdf8fd98049c0e47eb3893a8cbdb Mon Sep 17 00:00:00 2001 From: xuhy <3313886187@qq.com> Date: 星期三, 25 九月 2024 18:13:14 +0800 Subject: [PATCH] 修改接口 --- ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TDataGeneratorServiceImpl.java | 104 ++++++++++++++++++++++++++++----------------------- 1 files changed, 57 insertions(+), 47 deletions(-) diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TDataGeneratorServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TDataGeneratorServiceImpl.java index 1255135..c4cd614 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TDataGeneratorServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TDataGeneratorServiceImpl.java @@ -113,7 +113,10 @@ List<OrderMealGeneratorCountDTO> orderMealGeneratorCountDTOS = dto.getOrderMealGeneratorCountDTOS(); List<TOrderMeal> orderMeals = new ArrayList<>(); for (OrderMealGeneratorCountDTO orderMealGeneratorCountDTO : orderMealGeneratorCountDTOS) { - TBoard board = boards.stream().filter(e -> e.getId().equals(orderMealGeneratorCountDTO.getBoardId())).findFirst().get(); + TBoard board = boards.stream().filter(e -> e.getId().equals(orderMealGeneratorCountDTO.getBoardId())).findFirst().orElse(null); + if(Objects.isNull(board)){ + throw new ServiceException("桌台用餐人数配置不存在"); + } Integer orderCount = orderMealGeneratorCountDTO.getOrderCount(); // 查询当前桌的用餐人数 for (int i = 1; i <= orderCount; i++) { @@ -298,9 +301,13 @@ e.setGeneratorId(dataGenerator.getId()); e.setOrderNum(OrderNumConstants.SALE + CodeGenerateUtils.generateVolumeSn()); e.setIsCover(0); + e.setStatus(2); }); List<TOrderSaleGoods> orderSaleGoods = orderSales.stream().map(TOrderSale::getOrderSaleGoods).flatMap(Collection::stream).collect(Collectors.toList()); - + TOrderStock orderStockLast = orderStockService.getOne(Wrappers.lambdaQuery(TOrderStock.class) + .eq(TOrderStock::getShopId, dto.getShopId()) + .orderByDesc(TOrderStock::getStockTime) + .last("LIMIT 1")); // 生成进货数据 List<TOrderStock> stockList = new ArrayList<>(); stockDataSets.stream().sorted(Comparator.comparing(TStockDataSet::getStockDate)); @@ -342,45 +349,52 @@ stockList.add(orderStock); }else if(i==0 && Objects.nonNull(stockDataSet)){ - // 第一次 第一次的进货时间为上一次的结束时间 开始时间为上一次的开始时间 - LocalDate startTime1 = stockDataSet.getStockDate(); - List<TOrderSale> collect = orderSales.stream().filter(e -> e.getOrderTime().compareTo(startTime) < 0).collect(Collectors.toList()); - List<TOrderSaleGoods> orderSaleGoodsList = new ArrayList<>(); - collect.forEach(e->orderSaleGoodsList.addAll(e.getOrderSaleGoods())); - // 查询上一次开始之后的订单数据 - List<TOrderSale> orderSales1 = orderSaleService.list(new LambdaQueryWrapper<TOrderSale>().gt(TOrderSale::getOrderTime, startTime1)); - List<Long> saleIds1 = orderSales1.stream().map(TOrderSale::getId).collect(Collectors.toList()); - // 查询上一次的商品 - List<TOrderSaleGoods> list = orderSaleGoodsService.list(new LambdaQueryWrapper<TOrderSaleGoods>().in(TOrderSaleGoods::getOrderId, saleIds1)); - // 结合上次最后一次的数据 - list.addAll(orderSaleGoodsList); - // 删除上一次的数据生成 新生成一条数据 - TOrderStock orderStock = new TOrderStock(); - orderStock.setStockNum(OrderNumConstants.STOCK + CodeGenerateUtils.generateVolumeSn()); - orderStock.setStockTime(startTime); - orderStock.setIsCover(0); - orderStock.setGeneratorId(dataGenerator.getId()); - orderStock.setShopId(dto.getShopId()); + if(Objects.nonNull(orderStockLast)){ + // 查询商品进价 + List<TOrderStockGoods> orderStockGoodsList = orderStockGoodsService.list(Wrappers.lambdaQuery(TOrderStockGoods.class).eq(TOrderStockGoods::getOrderId, orderStockLast.getId())); + // 第一次 第一次的进货时间为上一次的结束时间 开始时间为上一次的开始时间 + LocalDate startTime1 = stockDataSet.getStockDate(); + List<TOrderSale> collect = orderSales.stream().filter(e -> e.getOrderTime().compareTo(startTime) < 0).collect(Collectors.toList()); + List<TOrderSaleGoods> orderSaleGoodsList = new ArrayList<>(); + collect.forEach(e->orderSaleGoodsList.addAll(e.getOrderSaleGoods())); + // 查询上一次开始之后的订单数据 + List<TOrderSale> orderSales1 = orderSaleService.list(new LambdaQueryWrapper<TOrderSale>().gt(TOrderSale::getOrderTime, startTime1)); + List<Long> saleIds1 = orderSales1.stream().map(TOrderSale::getId).collect(Collectors.toList()); + // 查询上一次的商品 + List<TOrderSaleGoods> list = orderSaleGoodsService.list(new LambdaQueryWrapper<TOrderSaleGoods>().in(TOrderSaleGoods::getOrderId, saleIds1)); + // 结合上次最后一次的数据 + list.addAll(orderSaleGoodsList); + // 删除上一次的数据生成 新生成一条数据 + TOrderStock orderStock = new TOrderStock(); + orderStock.setStockNum(OrderNumConstants.STOCK + CodeGenerateUtils.generateVolumeSn()); + orderStock.setStockTime(orderStockLast.getStockTime()); + orderStock.setIsCover(0); + orderStock.setGeneratorId(orderStockLast.getGeneratorId()); + orderStock.setShopId(dto.getShopId()); - Map<String, List<TOrderSaleGoods>> goodsList = list.stream().collect(Collectors.groupingBy(TOrderSaleGoods::getGoodsName)); - List<TOrderStockGoods> orderStockGoods = new ArrayList<>(); - goodsList.forEach((k,v)->{ - TOrderStockGoods tOrderStockGoods = new TOrderStockGoods(); - tOrderStockGoods.setGoodsName(k); - tOrderStockGoods.setGoodsNum(v.get(0).getGoodsNum()); - tOrderStockGoods.setCostPrice(v.get(0).getGoodsCostPrice()); - tOrderStockGoods.setSalePrice(v.get(0).getGoodsSalePrice()); -// tOrderStockGoods.setThisCostPrice(v.get(0).getThisSalePrice()); - tOrderStockGoods.setGoodsPicture(v.get(0).getGoodsPicture()); - tOrderStockGoods.setGoodsId(v.get(0).getGoodsId()); - int sum = v.stream().mapToInt(TOrderSaleGoods::getGoodsCount).sum(); - BigDecimal rate = new BigDecimal(100).subtract(start.getLossRate()).divide(new BigDecimal(100)).setScale(2, BigDecimal.ROUND_HALF_UP); - BigDecimal bigDecimal = new BigDecimal(sum).divide(rate,2,BigDecimal.ROUND_HALF_UP).setScale(0, BigDecimal.ROUND_HALF_UP); - tOrderStockGoods.setStockCount(Integer.parseInt(bigDecimal.toString().split("\\.")[0])); - orderStockGoods.add(tOrderStockGoods); - }); - orderStock.setOrderStockGoods(orderStockGoods); - stockList.add(orderStock); + Map<String, List<TOrderSaleGoods>> goodsList = list.stream().collect(Collectors.groupingBy(TOrderSaleGoods::getGoodsName)); + List<TOrderStockGoods> orderStockGoods = new ArrayList<>(); + goodsList.forEach((k,v)->{ + TOrderStockGoods tOrderStockGoods = new TOrderStockGoods(); + tOrderStockGoods.setGoodsName(k); + tOrderStockGoods.setGoodsNum(v.get(0).getGoodsNum()); + tOrderStockGoods.setCostPrice(v.get(0).getGoodsCostPrice()); + tOrderStockGoods.setSalePrice(v.get(0).getGoodsSalePrice()); + TOrderStockGoods orderStockGoods1 = orderStockGoodsList.stream().filter(e -> e.getGoodsName().equals(k)).findFirst().orElse(null); + if(Objects.nonNull(orderStockGoods1)){ + tOrderStockGoods.setThisCostPrice(orderStockGoods1.getThisCostPrice()); + } + tOrderStockGoods.setGoodsPicture(v.get(0).getGoodsPicture()); + tOrderStockGoods.setGoodsId(v.get(0).getGoodsId()); + int sum = v.stream().mapToInt(TOrderSaleGoods::getGoodsCount).sum(); + BigDecimal rate = new BigDecimal(100).subtract(start.getLossRate()).divide(new BigDecimal(100)).setScale(2, BigDecimal.ROUND_HALF_UP); + BigDecimal bigDecimal = new BigDecimal(sum).divide(rate,2,BigDecimal.ROUND_HALF_UP).setScale(0, BigDecimal.ROUND_HALF_UP); + tOrderStockGoods.setStockCount(Integer.parseInt(bigDecimal.toString().split("\\.")[0])); + orderStockGoods.add(tOrderStockGoods); + }); + orderStock.setOrderStockGoods(orderStockGoods); + stockList.add(orderStock); + } // 处理第一次到下一次的数据 TStockDataSet end = stockDataSets.get(i + 1); @@ -457,12 +471,8 @@ return; } // 删除上一次的数据生成 - TOrderStock orderStock = orderStockService.getOne(Wrappers.lambdaQuery(TOrderStock.class) - .eq(TOrderStock::getShopId, dto.getShopId()) - .orderByDesc(TOrderStock::getStockTime) - .last("LIMIT 1")); - if(Objects.nonNull(orderStock)){ - orderStockService.removeById(orderStock); + if(Objects.nonNull(orderStockLast)){ + orderStockService.removeById(orderStockLast); } orderSaleService.saveBatch(orderSales); for (TOrderSale orderSale : orderSales) { @@ -519,7 +529,7 @@ // 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); if(!CollectionUtils.isEmpty(orderSales)){ - BigDecimal money = orderSales.stream().map(TOrderSale::getPayMoney).reduce(BigDecimal::add).get(); + BigDecimal money = orderSales.stream().filter(e -> e.getGeneratorId().equals(tDataGeneratorVO.getId())).map(TOrderSale::getPayMoney).reduce(BigDecimal::add).get(); tDataGeneratorVO.setTotalRevenue(money); } } -- Gitblit v1.7.1