| | |
| | | long end = System.currentTimeMillis() - start; |
| | | System.err.println("相差时间========="+end); |
| | | }else { |
| | | // 生成失败 进行重试 |
| | | String key = dto.getShopId()+"_fail"; |
| | | if(redisCache.hasKey(key)){ |
| | | Object cacheObject = redisCache.getCacheObject(key); |
| | | int i = Integer.parseInt(cacheObject.toString()); |
| | | if(i == 10){ |
| | | this.removeById(dataGenerator); |
| | | throw new ServiceException("数据生成不在营业额范围内"); |
| | | redisCache.deleteObject(key); |
| | | throw new ServiceException("多次匹配数据不成功,请调整营业额范围"); |
| | | }else { |
| | | this.removeById(dataGenerator); |
| | | redisCache.setCacheObject(key,i+1); |
| | | this.mealDataGenerator(dto); |
| | | } |
| | | }else { |
| | | this.removeById(dataGenerator); |
| | | redisCache.setCacheObject(key,1); |
| | | this.mealDataGenerator(dto); |
| | | } |
| | | } |
| | | |
| | | } |
| | |
| | | orderSales.forEach(e->{ |
| | | e.setGeneratorId(dataGenerator.getId()); |
| | | e.setOrderNum(OrderNumConstants.SALE + CodeGenerateUtils.generateVolumeSn()); |
| | | e.setIsCover(0); |
| | | }); |
| | | List<TOrderSaleGoods> orderSaleGoods = orderSales.stream().map(TOrderSale::getOrderSaleGoods).flatMap(Collection::stream).collect(Collectors.toList()); |
| | | |
| | |
| | | if(i==stockDataSets.size()-1){ |
| | | // 最后一次 |
| | | LocalDate endTime = LocalDate.now(); |
| | | List<Long> saleIds = orderSales.stream().filter(e -> e.getOrderTime().compareTo(startTime) >= 0 && e.getOrderTime().compareTo(endTime) <= 0).map(TOrderSale::getId).collect(Collectors.toList()); |
| | | List<TOrderSaleGoods> orderSaleGoodsList = orderSaleGoods.stream().filter(e -> saleIds.contains(e.getOrderId())).collect(Collectors.toList()); |
| | | List<TOrderSale> collect = orderSales.stream().filter(e -> e.getOrderTime().compareTo(startTime) >= 0 && e.getOrderTime().compareTo(endTime) <= 0).collect(Collectors.toList()); |
| | | List<TOrderSaleGoods> orderSaleGoodsList = new ArrayList<>(); |
| | | collect.forEach(e->orderSaleGoodsList.addAll(e.getOrderSaleGoods())); |
| | | // 根据商品新生成一条数据 |
| | | TOrderStock orderStock = new TOrderStock(); |
| | | orderStock.setStockNum(OrderNumConstants.STOCK + CodeGenerateUtils.generateVolumeSn()); |
| | |
| | | tOrderStockGoods.setGoodsNum(v.get(0).getGoodsNum()); |
| | | tOrderStockGoods.setCostPrice(v.get(0).getGoodsCostPrice()); |
| | | tOrderStockGoods.setSalePrice(v.get(0).getGoodsSalePrice()); |
| | | tOrderStockGoods.setThisSalePrice(v.get(0).getThisSalePrice()); |
| | | // tOrderStockGoods.setThisCostPrice(v.get(0).getThisSalePrice()); |
| | | tOrderStockGoods.setGoodsPicture(v.get(0).getGoodsPicture()); |
| | | tOrderStockGoods.setGoodsId(v.get(0).getGoodsId()); |
| | | tOrderStockGoods.setStockCount(v.stream().mapToInt(TOrderSaleGoods::getGoodsCount).sum()); |
| | | int sum = v.stream().mapToInt(TOrderSaleGoods::getGoodsCount).sum(); |
| | | BigDecimal rate = start.getLossRate().divide(new BigDecimal(100)).setScale(2, BigDecimal.ROUND_HALF_UP); |
| | | BigDecimal bigDecimal = new BigDecimal(sum).divide(rate).setScale(0, BigDecimal.ROUND_HALF_UP); |
| | | tOrderStockGoods.setStockCount(Integer.parseInt(bigDecimal.toString().split("\\.")[0])); |
| | | orderStockGoods.add(tOrderStockGoods); |
| | | }); |
| | | orderStock.setOrderStockGoods(orderStockGoods); |
| | |
| | | }else if(i==0 && Objects.nonNull(stockDataSet)){ |
| | | // 第一次 第一次的进货时间为上一次的结束时间 开始时间为上一次的开始时间 |
| | | LocalDate startTime1 = stockDataSet.getStockDate(); |
| | | List<Long> saleIds = orderSales.stream().filter(e -> e.getOrderTime().compareTo(startTime) < 0).map(TOrderSale::getId).collect(Collectors.toList()); |
| | | List<TOrderSaleGoods> orderSaleGoodsList = orderSaleGoods.stream().filter(e -> saleIds.contains(e.getOrderId())).collect(Collectors.toList()); |
| | | 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()); |
| | |
| | | tOrderStockGoods.setGoodsNum(v.get(0).getGoodsNum()); |
| | | tOrderStockGoods.setCostPrice(v.get(0).getGoodsCostPrice()); |
| | | tOrderStockGoods.setSalePrice(v.get(0).getGoodsSalePrice()); |
| | | tOrderStockGoods.setThisSalePrice(v.get(0).getThisSalePrice()); |
| | | // tOrderStockGoods.setThisCostPrice(v.get(0).getThisSalePrice()); |
| | | tOrderStockGoods.setGoodsPicture(v.get(0).getGoodsPicture()); |
| | | tOrderStockGoods.setGoodsId(v.get(0).getGoodsId()); |
| | | tOrderStockGoods.setStockCount(v.stream().mapToInt(TOrderSaleGoods::getGoodsCount).sum()); |
| | | int sum = v.stream().mapToInt(TOrderSaleGoods::getGoodsCount).sum(); |
| | | BigDecimal rate = start.getLossRate().divide(new BigDecimal(100)).setScale(2, BigDecimal.ROUND_HALF_UP); |
| | | BigDecimal bigDecimal = new BigDecimal(sum).divide(rate).setScale(0, BigDecimal.ROUND_HALF_UP); |
| | | tOrderStockGoods.setStockCount(Integer.parseInt(bigDecimal.toString().split("\\.")[0])); |
| | | orderStockGoods.add(tOrderStockGoods); |
| | | }); |
| | | orderStock.setOrderStockGoods(orderStockGoods); |
| | |
| | | // 处理第一次到下一次的数据 |
| | | TStockDataSet end = stockDataSets.get(i + 1); |
| | | LocalDate endTime = end.getStockDate(); |
| | | List<Long> saleIds2 = orderSales.stream().filter(e -> e.getOrderTime().compareTo(startTime) >= 0 && e.getOrderTime().compareTo(endTime) < 0).map(TOrderSale::getId).collect(Collectors.toList()); |
| | | List<TOrderSaleGoods> orderSaleGoodsList2 = orderSaleGoods.stream().filter(e -> saleIds2.contains(e.getOrderId())).collect(Collectors.toList()); |
| | | List<TOrderSale> collect1 = orderSales.stream().filter(e -> e.getOrderTime().compareTo(startTime) >= 0 && e.getOrderTime().compareTo(endTime) < 0).collect(Collectors.toList()); |
| | | List<TOrderSaleGoods> orderSaleGoodsList2 = new ArrayList<>(); |
| | | collect1.forEach(e->orderSaleGoodsList2.addAll(e.getOrderSaleGoods())); |
| | | // 根据商品新生成一条数据 |
| | | TOrderStock orderStock1 = new TOrderStock(); |
| | | orderStock1.setStockNum(OrderNumConstants.STOCK + CodeGenerateUtils.generateVolumeSn()); |
| | |
| | | tOrderStockGoods.setGoodsNum(v.get(0).getGoodsNum()); |
| | | tOrderStockGoods.setCostPrice(v.get(0).getGoodsCostPrice()); |
| | | tOrderStockGoods.setSalePrice(v.get(0).getGoodsSalePrice()); |
| | | tOrderStockGoods.setThisSalePrice(v.get(0).getThisSalePrice()); |
| | | // tOrderStockGoods.setThisCostPrice(v.get(0).getThisSalePrice()); |
| | | tOrderStockGoods.setGoodsPicture(v.get(0).getGoodsPicture()); |
| | | tOrderStockGoods.setGoodsId(v.get(0).getGoodsId()); |
| | | tOrderStockGoods.setStockCount(v.stream().mapToInt(TOrderSaleGoods::getGoodsCount).sum()); |
| | | int sum = v.stream().mapToInt(TOrderSaleGoods::getGoodsCount).sum(); |
| | | BigDecimal rate = start.getLossRate().divide(new BigDecimal(100)).setScale(2, BigDecimal.ROUND_HALF_UP); |
| | | BigDecimal bigDecimal = new BigDecimal(sum).divide(rate).setScale(0, BigDecimal.ROUND_HALF_UP); |
| | | tOrderStockGoods.setStockCount(Integer.parseInt(bigDecimal.toString().split("\\.")[0])); |
| | | orderStockGoods1.add(tOrderStockGoods); |
| | | }); |
| | | orderStock1.setOrderStockGoods(orderStockGoods1); |
| | |
| | | }else { |
| | | TStockDataSet end = stockDataSets.get(i + 1); |
| | | LocalDate endTime = end.getStockDate(); |
| | | List<Long> saleIds = orderSales.stream().filter(e -> e.getOrderTime().compareTo(startTime) >= 0 && e.getOrderTime().compareTo(endTime) < 0).map(TOrderSale::getId).collect(Collectors.toList()); |
| | | List<TOrderSaleGoods> orderSaleGoodsList = orderSaleGoods.stream().filter(e -> saleIds.contains(e.getOrderId())).collect(Collectors.toList()); |
| | | List<TOrderSale> collect = orderSales.stream().filter(e -> e.getOrderTime().compareTo(startTime) >= 0 && e.getOrderTime().compareTo(endTime) < 0).collect(Collectors.toList()); |
| | | List<TOrderSaleGoods> orderSaleGoodsList = new ArrayList<>(); |
| | | collect.forEach(e->orderSaleGoodsList.addAll(e.getOrderSaleGoods())); |
| | | // 根据商品新生成一条数据 |
| | | TOrderStock orderStock = new TOrderStock(); |
| | | orderStock.setStockNum(OrderNumConstants.STOCK + CodeGenerateUtils.generateVolumeSn()); |
| | |
| | | tOrderStockGoods.setGoodsNum(v.get(0).getGoodsNum()); |
| | | tOrderStockGoods.setCostPrice(v.get(0).getGoodsCostPrice()); |
| | | tOrderStockGoods.setSalePrice(v.get(0).getGoodsSalePrice()); |
| | | tOrderStockGoods.setThisSalePrice(v.get(0).getThisSalePrice()); |
| | | // tOrderStockGoods.setThisCostPrice(v.get(0).getThisSalePrice()); |
| | | tOrderStockGoods.setGoodsPicture(v.get(0).getGoodsPicture()); |
| | | tOrderStockGoods.setGoodsId(v.get(0).getGoodsId()); |
| | | tOrderStockGoods.setStockCount(v.stream().mapToInt(TOrderSaleGoods::getGoodsCount).sum()); |
| | | int sum = v.stream().mapToInt(TOrderSaleGoods::getGoodsCount).sum(); |
| | | BigDecimal rate = start.getLossRate().divide(new BigDecimal(100)).setScale(2, BigDecimal.ROUND_HALF_UP); |
| | | BigDecimal bigDecimal = new BigDecimal(sum).divide(rate).setScale(0, BigDecimal.ROUND_HALF_UP); |
| | | tOrderStockGoods.setStockCount(Integer.parseInt(bigDecimal.toString().split("\\.")[0])); |
| | | orderStockGoods.add(tOrderStockGoods); |
| | | }); |
| | | orderStock.setOrderStockGoods(orderStockGoods); |
| | |
| | | // orderSaleGoods.forEach(e->e.setTypeName(list.stream().filter(m->m.getId().equals(e.getTypeId())).findFirst().get().getTypeName())); |
| | | orderSaleGoods.forEach(e->{ |
| | | e.setId(null); |
| | | e.setGoodsCostPrice(null); |
| | | }); |
| | | orderSaleGoodsService.saveBatch(orderSaleGoods); |
| | | // 添加数据 |
| | | stockList.forEach(e->e.setShopId(dataGenerator.getShopId())); |
| | | orderStockService.saveBatch(stockList); |
| | | for (TOrderStock stock : stockList) { |
| | | stock.getOrderStockGoods().forEach(e->e.setOrderId(stock.getId())); |
| | |
| | | if(dataGenerator.getOrderType() == 1){ |
| | | // 删除时间段的数据 |
| | | orderMealService.remove(Wrappers.lambdaQuery(TOrderMeal.class) |
| | | .gt(TOrderMeal::getMealTime, dataGenerator.getStartTime()) |
| | | .lt(TOrderMeal::getMealTime, dataGenerator.getEndTime())); |
| | | .ge(TOrderMeal::getMealTime, dataGenerator.getStartTime()) |
| | | .le(TOrderMeal::getMealTime, dataGenerator.getEndTime())); |
| | | // 修改覆盖类型为已覆盖 |
| | | orderMealService.update(Wrappers.lambdaUpdate(TOrderMeal.class).set(TOrderMeal::getIsCover, 1).eq(TOrderMeal::getGeneratorId, id)); |
| | | }else { |
| | | // 删除时间段的数据 |
| | | orderSaleService.remove(Wrappers.lambdaQuery(TOrderSale.class) |
| | | .ge(TOrderSale::getOrderTime, dataGenerator.getStartTime()) |
| | | .le(TOrderSale::getOrderTime, dataGenerator.getEndTime())); |
| | | // 修改覆盖类型为已覆盖 |
| | | orderStockService.update(Wrappers.lambdaUpdate(TOrderStock.class).set(TOrderStock::getIsCover, 1).eq(TOrderStock::getGeneratorId, id)); |
| | | // 删除时间段的数据 |
| | | orderStockService.remove(Wrappers.lambdaQuery(TOrderStock.class) |
| | | .gt(TOrderStock::getStockTime, dataGenerator.getStartTime()) |
| | | .lt(TOrderStock::getStockTime, dataGenerator.getEndTime())); |
| | | .ge(TOrderStock::getStockTime, dataGenerator.getStartTime()) |
| | | .le(TOrderStock::getStockTime, dataGenerator.getEndTime())); |
| | | // 修改覆盖类型为已覆盖 |
| | | orderStockService.update(Wrappers.lambdaUpdate(TOrderStock.class).set(TOrderStock::getIsCover, 1).eq(TOrderStock::getGeneratorId, id)); |
| | | } |