From 660f4451c140a9da1f4bb92721a403b128dbdaf7 Mon Sep 17 00:00:00 2001 From: xuhy <3313886187@qq.com> Date: 星期三, 30 十月 2024 17:15:26 +0800 Subject: [PATCH] 修改 --- ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TOrderMealController.java | 214 ++++++++++++++++++++++++++++++++++++++++++++++------- 1 files changed, 186 insertions(+), 28 deletions(-) diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TOrderMealController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TOrderMealController.java index d6b4098..711c10d 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TOrderMealController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TOrderMealController.java @@ -1,25 +1,40 @@ package com.ruoyi.web.controller.api; +import cn.afterturn.easypoi.excel.ExcelExportUtil; +import cn.afterturn.easypoi.excel.entity.ExportParams; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.ruoyi.common.basic.PageInfo; import com.ruoyi.common.core.domain.AjaxResult; -import com.ruoyi.system.domain.TGoodsType; -import com.ruoyi.system.domain.TOrderMeal; -import com.ruoyi.system.dto.AddDishDTO; +import com.ruoyi.common.utils.DateUtils; +import com.ruoyi.common.utils.WebUtils; +import com.ruoyi.framework.web.service.TokenService; +import com.ruoyi.system.domain.*; import com.ruoyi.system.dto.CheckoutDTO; -import com.ruoyi.system.dto.OrderMealGeneratorDTO; import com.ruoyi.system.dto.TOrderMealDTO; -import com.ruoyi.system.service.TGoodsTypeService; -import com.ruoyi.system.service.TOrderMealService; +import com.ruoyi.system.export.TOrderMealExportExcel; +import com.ruoyi.system.query.TOrderMealQuery; +import com.ruoyi.system.service.*; +import com.ruoyi.system.vo.AmountSumVO; +import com.ruoyi.system.vo.TOrderMealVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; +import org.apache.poi.ss.usermodel.Workbook; +import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.util.CollectionUtils; import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; +import javax.servlet.ServletOutputStream; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.math.BigDecimal; +import java.net.URLEncoder; +import java.util.ArrayList; import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; /** * <p> @@ -35,37 +50,145 @@ public class TOrderMealController { private final TOrderMealService orderMealService; + private final TOrderMealGoodsService orderMealGoodsService; + private final TGoodsTypeService goodsTypeService; + private final TGoodsService goodsService; + private final TBoardService boardService; + private final TokenService tokenService; @Autowired - public TOrderMealController(TOrderMealService orderMealService) { + public TOrderMealController(TOrderMealService orderMealService, TOrderMealGoodsService orderMealGoodsService, TGoodsTypeService goodsTypeService, TGoodsService goodsService, TBoardService boardService, TokenService tokenService) { this.orderMealService = orderMealService; + this.orderMealGoodsService = orderMealGoodsService; + this.goodsTypeService = goodsTypeService; + this.goodsService = goodsService; + this.boardService = boardService; + this.tokenService = tokenService; } /** * 查询餐饮列表 */ -// @ApiOperation( value = "查询餐饮列表") -// @PostMapping(value = "/list") -// public AjaxResult<List<TOrderMeal>> list() { -// return AjaxResult.success(orderMealService.list()); -// } + @ApiOperation( value = "查询餐饮分页列表") + @PostMapping(value = "/pageList") + public AjaxResult<PageInfo<TOrderMealVO>> pageList(@RequestBody TOrderMealQuery query) { + query.setShopId(tokenService.getLoginUser().getObjectId()); + return AjaxResult.success(orderMealService.pageList(query)); + } + + /** + * 查询餐饮金额统计 + */ + @ApiOperation( value = "查询餐饮金额统计") + @PostMapping(value = "/amountSum") + public AjaxResult<AmountSumVO> amountSum(@RequestBody TOrderMealQuery query) { + query.setShopId(tokenService.getLoginUser().getObjectId()); + AmountSumVO amountSumVO = orderMealService.amountSum(query); + if(amountSumVO.getObligation().compareTo(BigDecimal.ZERO) < 0){ + amountSumVO.setObligation(BigDecimal.ZERO); + } + return AjaxResult.success(amountSumVO); + } + + @ApiOperation( value = "查询餐饮详情") + @GetMapping(value = "/getDetailById") + public AjaxResult<TOrderMealVO> getDetailById(@RequestParam(value = "id") Long id) { + TOrderMeal orderMeal = orderMealService.getById(id); + TOrderMealVO orderMealVO = new TOrderMealVO(); + BeanUtils.copyProperties(orderMeal, orderMealVO); + List<TOrderMealGoods> list = orderMealGoodsService.list(Wrappers.lambdaQuery(TOrderMealGoods.class) + .eq(TOrderMealGoods::getOrderId, orderMeal.getId())); + if(!CollectionUtils.isEmpty(list)){ + Map<String, List<TOrderMealGoods>> map = list.stream().collect(Collectors.groupingBy(TOrderMealGoods::getTypeName)); + List<String> 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(","))); + }); + orderMealVO.setGoodsList(goodsList); + } + orderMealVO.setOrderMealGoods(list); + // 查询用餐人数 + TBoard board = boardService.getById(orderMeal.getBoardId()); + orderMealVO.setMaxPerson(board.getMaxPerson()); + orderMealVO.setMinPerson(board.getMinPerson()); + orderMealVO.setBoardName(board.getBoardName()); + return AjaxResult.success(orderMealVO); + } + + @ApiOperation( value = "修改") + @PostMapping(value = "/update") + public AjaxResult<String> update(@RequestBody TOrderMealDTO dto) { + // 删除所有菜品 + orderMealService.updateById(dto); + if(!CollectionUtils.isEmpty(dto.getMealOrderGoods())){ + orderMealGoodsService.remove(Wrappers.lambdaQuery(TOrderMealGoods.class) + .eq(TOrderMealGoods::getOrderId, dto.getId())); + for (TOrderMealGoods mealOrderGood : dto.getMealOrderGoods()) { + // 设置商品类型和类型id + TGoodsType goodsType = goodsTypeService.getById(mealOrderGood.getTypeId()); + mealOrderGood.setId(null); + mealOrderGood.setOrderId(dto.getId()); + mealOrderGood.setTypeId(goodsType.getId()); + mealOrderGood.setTypeName(goodsType.getTypeName()); + } + orderMealGoodsService.saveBatch(dto.getMealOrderGoods()); + } + return AjaxResult.success(); + } + @ApiOperation( value = "列表详情结账") + @PostMapping(value = "/detailUpdate") + public AjaxResult<String> detailUpdate(@RequestBody TOrderMealDTO dto) { + orderMealService.updateById(dto); + // 查询餐桌 + List<TOrderMealGoods> mealOrderGoods = dto.getMealOrderGoods(); + if (!CollectionUtils.isEmpty(mealOrderGoods)) { + // 删除所有菜品 + orderMealGoodsService.remove(Wrappers.lambdaQuery(TOrderMealGoods.class) + .eq(TOrderMealGoods::getOrderId, dto.getId())); + for (TOrderMealGoods mealOrderGood : mealOrderGoods) { + // 设置商品类型和类型id + mealOrderGood.setId(null); + } + orderMealGoodsService.saveBatch(mealOrderGoods); + } + return AjaxResult.success(); + } + + @ApiOperation( value = "删除餐饮订单") + @GetMapping(value = "/deleteById") + public AjaxResult<Boolean> deleteById(@RequestParam(value = "id") Long id) { + orderMealGoodsService.remove(Wrappers.lambdaQuery(TOrderMealGoods.class) + .eq(TOrderMealGoods::getOrderId, id)); + return AjaxResult.success(orderMealService.removeById(id)); + } /** * 添加餐饮管理 */ - @ApiOperation( value = "开台-点菜接口") + @ApiOperation( value = "开台") + @PostMapping(value = "/startMeal") + public AjaxResult<Integer> startMeal(@RequestBody TOrderMeal dto) { + dto.setShopId(tokenService.getLoginUser().getObjectId()); + orderMealService.startMeal(dto); + return AjaxResult.success(dto.getId()); + } + + /** + * 添加餐饮管理 + */ + @ApiOperation( value = "点菜接口") @PostMapping(value = "/add") public AjaxResult<Integer> add(@RequestBody TOrderMealDTO dto) { orderMealService.add(dto); return AjaxResult.success(dto.getId()); } - @ApiOperation( value = "加菜接口") - @PostMapping(value = "/addDish") - public AjaxResult<String> addDish(@Validated @RequestBody AddDishDTO dto) { - orderMealService.addDish(dto); - return AjaxResult.success(); - } +// @ApiOperation( value = "加菜接口") +// @PostMapping(value = "/addDish") +// public AjaxResult<String> addDish(@Validated @RequestBody AddDishDTO dto) { +// orderMealService.addDish(dto); +// return AjaxResult.success(); +// } @ApiOperation( value = "结账接口") @PostMapping(value = "/checkout") @@ -74,11 +197,46 @@ return AjaxResult.success(); } - @ApiOperation( value = "餐饮数据生成") - @PostMapping(value = "/dataGenerator") - public AjaxResult<String> dataGenerator(@RequestBody OrderMealGeneratorDTO dto) { - orderMealService.dataGenerator(dto); - return AjaxResult.success(); + /** + * 导出餐饮列表 + */ + @ApiOperation(value = "导出餐饮列表") + @PostMapping("/exportOrderMeal") + public void exportOrderMeal(@RequestBody TOrderMealQuery query) + { + query.setShopId(tokenService.getLoginUser().getObjectId()); + List<TOrderMealVO> list = orderMealService.exportOrderMeal(query); + List<TOrderMealExportExcel> orderMeals = new ArrayList<>(); + for (TOrderMealVO orderMealVO : list) { + TOrderMealExportExcel tOrderMealExportExcel = new TOrderMealExportExcel(); + BeanUtils.copyProperties(orderMealVO, tOrderMealExportExcel); + tOrderMealExportExcel.setCreateStrTime(DateUtils.localDateTimeToString(orderMealVO.getCreateTime())); + tOrderMealExportExcel.setGoodsList(orderMealVO.getGoodsList().stream().collect(Collectors.joining("\n"))); + orderMeals.add(tOrderMealExportExcel); + } + Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams(), TOrderMealExportExcel.class, orderMeals); + HttpServletResponse response = WebUtils.response(); + response.setContentType("application/vnd.ms-excel"); + response.setCharacterEncoding("utf-8"); + ServletOutputStream outputStream = null; + try { + String fileName = URLEncoder.encode("餐饮列表.xls", "utf-8"); + response.setHeader("Content-Disposition", "attachment;filename=" + fileName); + response.setContentType("application/vnd.ms-excel;charset=UTF-8"); + response.setHeader("Pragma", "no-cache"); + response.setHeader("Cache-Control", "no-cache"); + outputStream = response.getOutputStream(); + workbook.write(outputStream); + } catch (IOException e) { + e.printStackTrace(); + } finally { + try { + outputStream.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } } + } -- Gitblit v1.7.1