From bfdb3faf4f27df01718f58ac8c4ec0bcc092e7b6 Mon Sep 17 00:00:00 2001 From: xuhy <3313886187@qq.com> Date: 星期六, 30 十一月 2024 18:50:47 +0800 Subject: [PATCH] 生成数据明细导出修改 --- ruoyi-system/src/main/java/com/ruoyi/system/service/TOrderMealService.java | 2 ruoyi-system/src/main/java/com/ruoyi/system/mapper/TOrderMealMapper.java | 2 ruoyi-system/src/main/java/com/ruoyi/system/export/SaleGeneratorClient.java | 30 +++ ruoyi-system/src/main/java/com/ruoyi/system/export/SaleGeneratorListExport.java | 2 ruoyi-system/src/main/java/com/ruoyi/system/export/TOrderStockExportExcel.java | 2 ruoyi-system/src/main/java/com/ruoyi/system/domain/TOrderSaleGoods.java | 2 ruoyi-system/src/main/java/com/ruoyi/system/mapper/TOrderSaleMapper.java | 2 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TOrderSaleServiceImpl.java | 35 +++ ruoyi-system/src/main/resources/mapper/system/TOrderSaleMapper.xml | 24 ++ ruoyi-system/src/main/java/com/ruoyi/system/export/TOrderMealExportExcel.java | 4 ruoyi-system/src/main/java/com/ruoyi/system/export/TOrderMealExportExcelTempLate.java | 43 ++++ ruoyi-system/src/main/java/com/ruoyi/system/export/TOrderSaleExportExcel.java | 6 ruoyi-system/src/main/resources/template/销售数据列表.xls | 0 ruoyi-system/src/main/java/com/ruoyi/system/export/TOrderSaleAndGoodsExportExcelTemplate.java | 29 +++ ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TDataGeneratorController.java | 250 +++++++++++++++++++++++++-- ruoyi-admin/pom.xml | 6 ruoyi-system/src/main/java/com/ruoyi/system/export/MealGeneratorListExport.java | 2 ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TOrderSaleController.java | 1 ruoyi-system/src/main/java/com/ruoyi/system/export/MealGeneratorClient.java | 31 +++ ruoyi-system/src/main/java/com/ruoyi/system/export/TOrderSaleAndGoodsExportExcel.java | 9 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TOrderMealServiceImpl.java | 5 ruoyi-system/src/main/java/com/ruoyi/system/service/TOrderSaleService.java | 2 ruoyi-system/src/main/java/com/ruoyi/system/vo/GoodsProfitVO.java | 6 ruoyi-system/src/main/resources/mapper/system/TOrderMealMapper.xml | 27 ++ ruoyi-system/src/main/resources/template/餐饮数据列表.xls | 0 25 files changed, 482 insertions(+), 40 deletions(-) diff --git a/ruoyi-admin/pom.xml b/ruoyi-admin/pom.xml index a6e18e6..678d5da 100644 --- a/ruoyi-admin/pom.xml +++ b/ruoyi-admin/pom.xml @@ -120,17 +120,17 @@ <dependency> <groupId>cn.afterturn</groupId> <artifactId>easypoi-base</artifactId> - <version>3.0.3</version> + <version>4.3.0</version> </dependency> <dependency> <groupId>cn.afterturn</groupId> <artifactId>easypoi-web</artifactId> - <version>3.0.3</version> + <version>4.3.0</version> </dependency> <dependency> <groupId>cn.afterturn</groupId> <artifactId>easypoi-annotation</artifactId> - <version>3.0.3</version> + <version>4.3.0</version> </dependency> <!-- 阿里云短信 --> diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TDataGeneratorController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TDataGeneratorController.java index 74584cc..7de049c 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TDataGeneratorController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TDataGeneratorController.java @@ -3,6 +3,9 @@ import cn.afterturn.easypoi.excel.ExcelExportUtil; import cn.afterturn.easypoi.excel.entity.ExportParams; +import cn.afterturn.easypoi.excel.entity.TemplateExportParams; +import cn.hutool.core.io.resource.ClassPathResource; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.ruoyi.common.basic.PageInfo; import com.ruoyi.common.constant.OrderNumConstants; import com.ruoyi.common.core.domain.AjaxResult; @@ -10,6 +13,7 @@ import com.ruoyi.common.utils.DateUtils; import com.ruoyi.common.utils.WebUtils; import com.ruoyi.framework.web.service.TokenService; +import com.ruoyi.system.domain.TDataGenerator; import com.ruoyi.system.domain.TOrderSaleGoods; import com.ruoyi.system.domain.TOrderStockGoods; import com.ruoyi.system.dto.OrderMealGeneratorDTO; @@ -26,7 +30,9 @@ import com.ruoyi.system.vo.*; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; +import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Workbook; +import org.apache.poi.ss.util.CellRangeAddress; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.annotation.Validated; @@ -37,8 +43,8 @@ import java.io.IOException; import java.math.BigDecimal; import java.net.URLEncoder; -import java.util.ArrayList; -import java.util.List; +import java.text.SimpleDateFormat; +import java.util.*; import java.util.stream.Collectors; /** @@ -139,30 +145,133 @@ return AjaxResult.success(dataGeneratorService.stockGeneratorDataDetail(query)); } +// @ApiOperation( value = "餐饮生成数据详情导出") +// @PostMapping(value = "/mealGeneratorExport") +// public void mealGeneratorExport(@Validated @RequestBody TDataGeneratorMealQuery query) { +// List<TOrderMealVO> list = orderMealService.mealGeneratorExport(query); +// List<TOrderMealExportExcel> orderMeals = new ArrayList<>(); +// for (TOrderMealVO orderMealVO : list) { +// TOrderMealExportExcel tOrderMealExportExcel = new TOrderMealExportExcel(); +// BeanUtils.copyProperties(orderMealVO, tOrderMealExportExcel); +// tOrderMealExportExcel.setCreateStrTime(DateUtils.localDateToString(orderMealVO.getMealTime())); +// tOrderMealExportExcel.setGoodsList(orderMealVO.getGoodsList().stream().collect(Collectors.joining("\n"))); +// tOrderMealExportExcel.setPersonCount(orderMealVO.getMealPerson()); +// 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(); +// } +// } +// } @ApiOperation( value = "餐饮生成数据详情导出") @PostMapping(value = "/mealGeneratorExport") public void mealGeneratorExport(@Validated @RequestBody TDataGeneratorMealQuery query) { + Map<String, Object> result = new HashMap<>(); + TDataGenerator dataGenerator = dataGeneratorService.getById(query.getGeneratorId()); List<TOrderMealVO> list = orderMealService.mealGeneratorExport(query); - List<TOrderMealExportExcel> orderMeals = new ArrayList<>(); + MealGeneratorClient mealGeneratorClient = new MealGeneratorClient(); + // 统计 + Map<String, Double> map = orderMealService.getDataGeneratorMealDetail(query); + BigDecimal money = new BigDecimal(map.get("moneyPay")).setScale(2,BigDecimal.ROUND_HALF_UP); + BigDecimal card = new BigDecimal(map.get("cardPay")).setScale(2,BigDecimal.ROUND_HALF_UP); + BigDecimal weiXin = new BigDecimal(map.get("weiXinPay")).setScale(2,BigDecimal.ROUND_HALF_UP); + BigDecimal ali = new BigDecimal(map.get("aliPay")).setScale(2,BigDecimal.ROUND_HALF_UP); + BigDecimal other = new BigDecimal(map.get("otherPay")).setScale(2,BigDecimal.ROUND_HALF_UP); + + Map<String, Double> map1 = orderMealService.getDataGeneratorMealDetailOrderMoney(query); + BigDecimal money1 = new BigDecimal(map1.get("moneyPay")).setScale(2,BigDecimal.ROUND_HALF_UP); + BigDecimal card1 = new BigDecimal(map1.get("cardPay")).setScale(2,BigDecimal.ROUND_HALF_UP); + BigDecimal weiXin1 = new BigDecimal(map1.get("weiXinPay")).setScale(2,BigDecimal.ROUND_HALF_UP); + BigDecimal ali1 = new BigDecimal(map1.get("aliPay")).setScale(2,BigDecimal.ROUND_HALF_UP); + BigDecimal other1 = new BigDecimal(map1.get("otherPay")).setScale(2,BigDecimal.ROUND_HALF_UP); + + if(Objects.nonNull(query.getStartTime())){ + mealGeneratorClient.setGeneratorTime(DateUtils.localDateToString(DateUtils.stringToLocalDateTime(query.getStartTime()).toLocalDate()) + "零时 ~ " + DateUtils.localDateToString(DateUtils.stringToLocalDateTime(query.getStartTime()).toLocalDate().plusDays(1)) + "零时"); + }else { + mealGeneratorClient.setGeneratorTime(DateUtils.localDateToString(dataGenerator.getStartTime()) + " 零时 ~ " + DateUtils.localDateToString(dataGenerator.getEndTime().plusDays(1)) + " 零时"); + } + mealGeneratorClient.setAllMoney(money.add(card).add(weiXin).add(ali).add(other)); + mealGeneratorClient.setAllOrderMoney(money1.add(card1).add(weiXin1).add(ali1).add(other1)); + mealGeneratorClient.setWeiXinPayAmount(weiXin); + mealGeneratorClient.setAliPayAmount(ali); + mealGeneratorClient.setCardPayAmount(card); + mealGeneratorClient.setMoneyPayAmount(money); + mealGeneratorClient.setOtherPayAmount(other); + + List<TOrderMealExportExcelTempLate> orderMeals = new ArrayList<>(); for (TOrderMealVO orderMealVO : list) { - TOrderMealExportExcel tOrderMealExportExcel = new TOrderMealExportExcel(); + TOrderMealExportExcelTempLate tOrderMealExportExcel = new TOrderMealExportExcelTempLate(); BeanUtils.copyProperties(orderMealVO, tOrderMealExportExcel); tOrderMealExportExcel.setCreateStrTime(DateUtils.localDateToString(orderMealVO.getMealTime())); tOrderMealExportExcel.setGoodsList(orderMealVO.getGoodsList().stream().collect(Collectors.joining("\n"))); tOrderMealExportExcel.setPersonCount(orderMealVO.getMealPerson()); + switch (orderMealVO.getPayType()){ + case 1: + tOrderMealExportExcel.setPayType("现金"); + break; + case 2: + tOrderMealExportExcel.setPayType("支付宝"); + break; + case 3: + tOrderMealExportExcel.setPayType("微信"); + break; + case 4: + tOrderMealExportExcel.setPayType("银行卡"); + break; + default: + tOrderMealExportExcel.setPayType("其他"); + } + switch (orderMealVO.getMealType()){ + case 1: + tOrderMealExportExcel.setMealType("散客"); + break; + case 2: + tOrderMealExportExcel.setMealType("宴席"); + break; + } + switch (orderMealVO.getStatus()){ + case 1: + tOrderMealExportExcel.setStatus("待付款"); + break; + case 2: + tOrderMealExportExcel.setStatus("已付款"); + break; + } orderMeals.add(tOrderMealExportExcel); } - Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams(), TOrderMealExportExcel.class, orderMeals); + mealGeneratorClient.setOrderMeals(orderMeals); + + result.put("mealGeneratorClient",mealGeneratorClient); + + //1.获取excel模板 + ClassPathResource classPathResource = new ClassPathResource("template/餐饮数据列表.xls"); + TemplateExportParams params = new TemplateExportParams(classPathResource.getPath()); + Workbook workbook = ExcelExportUtil.exportExcel(params, result); 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"); + String fileName = URLEncoder.encode("餐饮数据列表.xls", "utf-8"); + response.setHeader("Content-dispodition", "attachment;filename=" + fileName); outputStream = response.getOutputStream(); workbook.write(outputStream); } catch (IOException e) { @@ -179,26 +288,96 @@ @ApiOperation( value = "销售生成数据详情导出") @PostMapping(value = "/saleGeneratorExport") public void saleGeneratorExport(@Validated @RequestBody TDataGeneratorSaleQuery query) { + + Map<String, Object> result = new HashMap<>(); + TDataGenerator dataGenerator = dataGeneratorService.getById(query.getGeneratorId()); + SaleGeneratorClient saleGeneratorClient = new SaleGeneratorClient(); + + // 统计 + Map<String, Double> map = orderSaleService.getDataGeneratorSaleDetail(query); + BigDecimal money = new BigDecimal(map.get("moneyPay")).setScale(2,BigDecimal.ROUND_HALF_UP); + BigDecimal card = new BigDecimal(map.get("cardPay")).setScale(2,BigDecimal.ROUND_HALF_UP); + BigDecimal weiXin = new BigDecimal(map.get("weiXinPay")).setScale(2,BigDecimal.ROUND_HALF_UP); + BigDecimal ali = new BigDecimal(map.get("aliPay")).setScale(2,BigDecimal.ROUND_HALF_UP); + BigDecimal other = new BigDecimal(map.get("otherPay")).setScale(2,BigDecimal.ROUND_HALF_UP); + + Map<String, Double> map1 = orderSaleService.getDataGeneratorSaleDetailOrderMoney(query); + BigDecimal money1 = new BigDecimal(map1.get("moneyPay")).setScale(2,BigDecimal.ROUND_HALF_UP); + BigDecimal card1 = new BigDecimal(map1.get("cardPay")).setScale(2,BigDecimal.ROUND_HALF_UP); + BigDecimal weiXin1 = new BigDecimal(map1.get("weiXinPay")).setScale(2,BigDecimal.ROUND_HALF_UP); + BigDecimal ali1 = new BigDecimal(map1.get("aliPay")).setScale(2,BigDecimal.ROUND_HALF_UP); + BigDecimal other1 = new BigDecimal(map1.get("otherPay")).setScale(2,BigDecimal.ROUND_HALF_UP); + + if(Objects.nonNull(query.getStartTime())){ + saleGeneratorClient.setGeneratorTime(DateUtils.localDateToString(DateUtils.stringToLocalDateTime(query.getStartTime()).toLocalDate()) + "零时 ~ " + DateUtils.localDateToString(DateUtils.stringToLocalDateTime(query.getStartTime()).toLocalDate().plusDays(1)) + "零时"); + }else { + saleGeneratorClient.setGeneratorTime(DateUtils.localDateToString(dataGenerator.getStartTime()) + " 零时 ~ " + DateUtils.localDateToString(dataGenerator.getEndTime().plusDays(1)) + " 零时"); + } + saleGeneratorClient.setAllMoney(money.add(card).add(weiXin).add(ali).add(other)); + saleGeneratorClient.setAllOrderMoney(money1.add(card1).add(weiXin1).add(ali1).add(other1)); + saleGeneratorClient.setWeiXinPayAmount(weiXin); + saleGeneratorClient.setAliPayAmount(ali); + saleGeneratorClient.setCardPayAmount(card); + saleGeneratorClient.setMoneyPayAmount(money); + saleGeneratorClient.setOtherPayAmount(other); + List<TOrderSaleVO> list = orderSaleService.saleGeneratorExport(query); - List<TOrderSaleAndGoodsExportExcel> orderMeals = new ArrayList<>(); + List<TOrderSaleAndGoodsExportExcelTemplate> orderMeals = new ArrayList<>(); for (TOrderSaleVO orderSaleVO : list) { - TOrderSaleAndGoodsExportExcel orderSaleExportExcel = new TOrderSaleAndGoodsExportExcel(); + TOrderSaleAndGoodsExportExcelTemplate orderSaleExportExcel = new TOrderSaleAndGoodsExportExcelTemplate(); BeanUtils.copyProperties(orderSaleVO, orderSaleExportExcel); orderSaleExportExcel.setCreateStrTime(DateUtils.localDateTimeToString(orderSaleVO.getCreateTime())); orderSaleExportExcel.setGoodsAmount(orderSaleVO.getOrderSaleGoods().stream().map(TOrderSaleGoods::getThisSalePrice).reduce(BigDecimal::add).get()); + switch (orderSaleVO.getPayType()){ + case 1: + orderSaleExportExcel.setPayType("现金"); + break; + case 2: + orderSaleExportExcel.setPayType("支付宝"); + break; + case 3: + orderSaleExportExcel.setPayType("微信"); + break; + case 4: + orderSaleExportExcel.setPayType("银行卡"); + break; + default: + orderSaleExportExcel.setPayType("其他"); + } orderMeals.add(orderSaleExportExcel); } - Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams(), TOrderSaleAndGoodsExportExcel.class, orderMeals); + + saleGeneratorClient.setOrderMeals(orderMeals); + + result.put("saleGeneratorClient",saleGeneratorClient); + + //1.获取excel模板 + ClassPathResource classPathResource = new ClassPathResource("template/销售数据列表.xls"); + TemplateExportParams params = new TemplateExportParams(classPathResource.getPath()); + Workbook workbook = ExcelExportUtil.exportExcel(params, result); + + Sheet firstSheet = workbook.getSheetAt(0); +// List<CellRangeAddress> mergedRegions = firstSheet.getMergedRegions(); +// List<Integer> removeMergedRegionIndexList = new ArrayList<>(); + // 处理数据不显示 +// for (int i = 0; i < mergedRegions.size(); i++) { +// CellRangeAddress mergedRegion = mergedRegions.get(i); +// int firstColumn = mergedRegion.getFirstColumn(); +// int lastColumn = mergedRegion.getLastColumn(); +// int firstRow = mergedRegion.getFirstRow(); +// if(firstRow >= 2 && firstColumn >= 3 && lastColumn <= 5){ +// removeMergedRegionIndexList.add(i); +// } +// } +// firstSheet.removeMergedRegions(removeMergedRegionIndexList); + 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"); + String fileName = URLEncoder.encode("销售数据列表.xls", "utf-8"); + response.setHeader("Content-dispodition", "attachment;filename=" + fileName); outputStream = response.getOutputStream(); workbook.write(outputStream); } catch (IOException e) { @@ -211,6 +390,41 @@ } } } +// @ApiOperation( value = "销售生成数据详情导出") +// @PostMapping(value = "/saleGeneratorExport") +// public void saleGeneratorExport(@Validated @RequestBody TDataGeneratorSaleQuery query) { +// List<TOrderSaleVO> list = orderSaleService.saleGeneratorExport(query); +// List<TOrderSaleAndGoodsExportExcel> orderMeals = new ArrayList<>(); +// for (TOrderSaleVO orderSaleVO : list) { +// TOrderSaleAndGoodsExportExcel orderSaleExportExcel = new TOrderSaleAndGoodsExportExcel(); +// BeanUtils.copyProperties(orderSaleVO, orderSaleExportExcel); +// orderSaleExportExcel.setCreateStrTime(DateUtils.localDateTimeToString(orderSaleVO.getCreateTime())); +// orderSaleExportExcel.setGoodsAmount(orderSaleVO.getOrderSaleGoods().stream().map(TOrderSaleGoods::getThisSalePrice).reduce(BigDecimal::add).get()); +// orderMeals.add(orderSaleExportExcel); +// } +// Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams(), TOrderSaleAndGoodsExportExcel.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(); +// } +// } +// } @ApiOperation( value = "进货生成数据详情导出") @PostMapping(value = "/stockGeneratorExport") diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TOrderSaleController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TOrderSaleController.java index 44a11f7..79124a6 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TOrderSaleController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TOrderSaleController.java @@ -13,7 +13,6 @@ import com.ruoyi.system.domain.TOrderSaleGoods; import com.ruoyi.system.dto.CheckoutDTO; import com.ruoyi.system.dto.TOrderSaleDTO; -import com.ruoyi.system.export.TOrderMealExportExcel; import com.ruoyi.system.export.TOrderSaleExportExcel; import com.ruoyi.system.query.TOrderMealQuery; import com.ruoyi.system.query.TOrderSaleQuery; diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/TOrderSaleGoods.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/TOrderSaleGoods.java index 1825d48..7e2ad6e 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/domain/TOrderSaleGoods.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/TOrderSaleGoods.java @@ -46,7 +46,7 @@ private String goodsName; @ApiModelProperty(value = "商品成本价") - @Excel(name = "商品进价", width = 15) + @Excel(name = "商品进价", width = 15,isStatistics = true) @TableField("goodsCostPrice") private BigDecimal goodsCostPrice; diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/export/MealGeneratorClient.java b/ruoyi-system/src/main/java/com/ruoyi/system/export/MealGeneratorClient.java new file mode 100644 index 0000000..63a2d28 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/export/MealGeneratorClient.java @@ -0,0 +1,31 @@ +package com.ruoyi.system.export; + +import cn.afterturn.easypoi.excel.annotation.Excel; +import cn.afterturn.easypoi.excel.annotation.ExcelCollection; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + +@Data +public class MealGeneratorClient { + @Excel(name = "生成时间") + private String generatorTime; + @Excel(name = "实收统计") + private BigDecimal allMoney; + @Excel(name = "订单金额实收统计") + private BigDecimal allOrderMoney; + @Excel(name = "微信支付") + private BigDecimal weiXinPayAmount; + @Excel(name = "支付宝支付") + private BigDecimal aliPayAmount; + @Excel(name = "银行卡支付") + private BigDecimal cardPayAmount; + @Excel(name = "现金支付") + private BigDecimal moneyPayAmount; + @Excel(name = "其他支付") + private BigDecimal otherPayAmount; + @ExcelCollection(name = "餐饮详情数据列表") + private List<TOrderMealExportExcelTempLate> orderMeals; + +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/export/MealGeneratorListExport.java b/ruoyi-system/src/main/java/com/ruoyi/system/export/MealGeneratorListExport.java index 670d1ee..f01049c 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/export/MealGeneratorListExport.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/export/MealGeneratorListExport.java @@ -25,7 +25,7 @@ @Excel(name = "营业额范围",width = 30) private String revenueRange; - @Excel(name = "生成营业额合计(元)",width = 30) + @Excel(name = "生成营业额合计(元)",width = 30,isStatistics = true) private BigDecimal totalRevenue; @Excel(name = "状态",width = 30,replace = {"生成中_1","待覆盖_2","已覆盖_3"}) diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/export/SaleGeneratorClient.java b/ruoyi-system/src/main/java/com/ruoyi/system/export/SaleGeneratorClient.java new file mode 100644 index 0000000..c0b2990 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/export/SaleGeneratorClient.java @@ -0,0 +1,30 @@ +package com.ruoyi.system.export; + +import cn.afterturn.easypoi.excel.annotation.Excel; +import cn.afterturn.easypoi.excel.annotation.ExcelCollection; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + +@Data +public class SaleGeneratorClient { + @Excel(name = "生成时间") + private String generatorTime; + @Excel(name = "实收统计") + private BigDecimal allMoney; + @Excel(name = "订单金额实收统计") + private BigDecimal allOrderMoney; + @Excel(name = "微信支付") + private BigDecimal weiXinPayAmount; + @Excel(name = "支付宝支付") + private BigDecimal aliPayAmount; + @Excel(name = "银行卡支付") + private BigDecimal cardPayAmount; + @Excel(name = "现金支付") + private BigDecimal moneyPayAmount; + @Excel(name = "其他支付") + private BigDecimal otherPayAmount; + private List<TOrderSaleAndGoodsExportExcelTemplate> orderMeals; + +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/export/SaleGeneratorListExport.java b/ruoyi-system/src/main/java/com/ruoyi/system/export/SaleGeneratorListExport.java index 641c9db..68551a3 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/export/SaleGeneratorListExport.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/export/SaleGeneratorListExport.java @@ -21,7 +21,7 @@ @Excel(name = "覆盖时间段",width = 30) private String startTimeStr; - @Excel(name = "生成营业额合计(元)",width = 30) + @Excel(name = "生成营业额合计(元)",width = 30,isStatistics = true) private BigDecimal totalRevenue; @Excel(name = "状态",width = 30,replace = {"生成中_1","待覆盖_2","已覆盖_3"}) diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/export/TOrderMealExportExcel.java b/ruoyi-system/src/main/java/com/ruoyi/system/export/TOrderMealExportExcel.java index 6eb79b4..9e8640d 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/export/TOrderMealExportExcel.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/export/TOrderMealExportExcel.java @@ -21,10 +21,10 @@ @Excel(width = 30,name = "开台日期") private String createStrTime; - @Excel(width = 30,name = "订单金额") + @Excel(width = 30,name = "订单金额",isStatistics = true) private BigDecimal orderMoney; - @Excel(width = 30,name = "支付金额") + @Excel(width = 30,name = "支付金额",isStatistics = true) private BigDecimal payMoney; @Excel(width = 30,name = "支付方式",replace = {"现金_1","支付宝_2","微信_3","银行卡_4","其他_5"}) diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/export/TOrderMealExportExcelTempLate.java b/ruoyi-system/src/main/java/com/ruoyi/system/export/TOrderMealExportExcelTempLate.java new file mode 100644 index 0000000..1e5b0be --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/export/TOrderMealExportExcelTempLate.java @@ -0,0 +1,43 @@ +package com.ruoyi.system.export; + +import cn.afterturn.easypoi.excel.annotation.Excel; +import io.swagger.annotations.ApiModel; +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; + +@Data +@ApiModel(value = "餐饮订单Excel模板") +public class TOrderMealExportExcelTempLate implements Serializable { + @Excel(width = 30,name = "订单编号") + private String orderNum; + + @Excel(width = 30,name = "开台日期") + private String createStrTime; + + @Excel(width = 30,name = "订单金额",isStatistics = true) + private BigDecimal orderMoney; + + @Excel(width = 30,name = "支付金额",isStatistics = true) + private BigDecimal payMoney; + + @Excel(width = 30,name = "支付方式",replace = {"现金_1","支付宝_2","微信_3","银行卡_4","其他_5"}) + private String payType; + + @Excel(width = 30,name = "桌号") + private String boardName; + + @Excel(width = 30,name = "用餐类型",replace = {"散客_1","宴席_2"}) + private String mealType; + + @Excel(width = 30,name = "用餐人数") + private Integer personCount; + + @Excel(width = 30,name = "菜品") + private String goodsList; + + @Excel(width = 30,name = "支付状态",replace = {"待付款_1","已付款_2"}) + private String status; + +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/export/TOrderSaleAndGoodsExportExcel.java b/ruoyi-system/src/main/java/com/ruoyi/system/export/TOrderSaleAndGoodsExportExcel.java index 8f6b175..9971c4d 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/export/TOrderSaleAndGoodsExportExcel.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/export/TOrderSaleAndGoodsExportExcel.java @@ -14,18 +14,17 @@ @ApiModel(value = "销售订单导出明细Excel") public class TOrderSaleAndGoodsExportExcel implements Serializable { - @Excel(width = 30,name = "订单编号",needMerge = true) + @Excel(width = 30,name = "订单编号") private String orderNum; - @Excel(width = 30,name = "下单日期",needMerge = true) + @Excel(width = 30,name = "下单日期") private String createStrTime; - @ExcelCollection(name = "菜品明细") private List<TOrderSaleGoods> orderSaleGoods; - @Excel(width = 30,name = "商品总价",needMerge = true) + @Excel(width = 30,name = "商品总价") private BigDecimal goodsAmount; - @Excel(width = 30,name = "支付方式",replace = {"现金_1","支付宝_2","微信_3","银行卡_4","其他_5"," _null"},needMerge = true) + @Excel(width = 30,name = "支付方式",replace = {"现金_1","支付宝_2","微信_3","银行卡_4","其他_5"," _null"}) private Integer payType; } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/export/TOrderSaleAndGoodsExportExcelTemplate.java b/ruoyi-system/src/main/java/com/ruoyi/system/export/TOrderSaleAndGoodsExportExcelTemplate.java new file mode 100644 index 0000000..c59ce5e --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/export/TOrderSaleAndGoodsExportExcelTemplate.java @@ -0,0 +1,29 @@ +package com.ruoyi.system.export; + +import cn.afterturn.easypoi.excel.annotation.Excel; +import com.ruoyi.system.domain.TOrderSaleGoods; +import io.swagger.annotations.ApiModel; +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.List; + +@Data +@ApiModel(value = "销售订单导出明细Excel模板") +public class TOrderSaleAndGoodsExportExcelTemplate implements Serializable { + + @Excel(width = 30,name = "订单编号") + private String orderNum; + + @Excel(width = 30,name = "下单日期") + private String createStrTime; + + private List<TOrderSaleGoods> orderSaleGoods; + + @Excel(width = 30,name = "商品总价") + private BigDecimal goodsAmount; + + @Excel(width = 30,name = "支付方式",replace = {"现金_1","支付宝_2","微信_3","银行卡_4","其他_5"," _null"}) + private String payType; +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/export/TOrderSaleExportExcel.java b/ruoyi-system/src/main/java/com/ruoyi/system/export/TOrderSaleExportExcel.java index 8ee13ca..e2715f8 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/export/TOrderSaleExportExcel.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/export/TOrderSaleExportExcel.java @@ -17,10 +17,10 @@ @Excel(width = 30,name = "开台日期") private String createStrTime; - @Excel(width = 30,name = "订单金额") + @Excel(width = 30,name = "订单金额",isStatistics = true) private BigDecimal orderMoney; - @Excel(width = 30,name = "支付金额") + @Excel(width = 30,name = "支付金额",isStatistics = true) private BigDecimal payMoney; @Excel(width = 30,name = "支付方式",replace = {"现金_1","支付宝_2","微信_3","银行卡_4","其他_5"," _null"}) @@ -29,7 +29,7 @@ @Excel(width = 30,name = "货品数量") private Integer goodsCount; - @Excel(width = 30,name = "货品总价") + @Excel(width = 30,name = "货品总价",isStatistics = true) private BigDecimal goodsAmount; @Excel(width = 30,name = "支付状态",replace = {"待付款_1","已付款_2"}) diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/export/TOrderStockExportExcel.java b/ruoyi-system/src/main/java/com/ruoyi/system/export/TOrderStockExportExcel.java index 99ad705..96fe372 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/export/TOrderStockExportExcel.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/export/TOrderStockExportExcel.java @@ -23,7 +23,7 @@ @ExcelCollection(name = "菜品明细") private List<TOrderStockGoods> orderStockGoods; - @Excel(width = 30,name = "商品总价",needMerge = true) + @Excel(width = 30,name = "商品总价",needMerge = true,isStatistics = true) private BigDecimal stockTotalPrice; } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TOrderMealMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TOrderMealMapper.java index 9ed2621..3ec056f 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TOrderMealMapper.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TOrderMealMapper.java @@ -122,4 +122,6 @@ */ void deleteByShopId(@Param("shopId")Long shopId); + Map<String, Double> getDataGeneratorMealDetailOrderMoney(@Param("query")TDataGeneratorMealQuery query); + } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TOrderSaleMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TOrderSaleMapper.java index da67621..c16e023 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TOrderSaleMapper.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TOrderSaleMapper.java @@ -108,4 +108,6 @@ */ void deleteByShopId(@Param("shopId")Long shopId); + Map<String, Double> getDataGeneratorSaleDetailOrderMoney(@Param("query")TDataGeneratorSaleQuery query); + } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/TOrderMealService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/TOrderMealService.java index e75eba5..05f9fc3 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/TOrderMealService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/TOrderMealService.java @@ -145,4 +145,6 @@ * @param shopId */ void deleteByShopId(Long shopId); + + Map<String, Double> getDataGeneratorMealDetailOrderMoney(TDataGeneratorMealQuery query); } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/TOrderSaleService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/TOrderSaleService.java index 99dda92..92778cf 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/TOrderSaleService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/TOrderSaleService.java @@ -123,4 +123,6 @@ */ void deleteByShopId(Long shopId); + Map<String, Double> getDataGeneratorSaleDetailOrderMoney(TDataGeneratorSaleQuery query); + } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TOrderMealServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TOrderMealServiceImpl.java index 41e151a..e995d1d 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TOrderMealServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TOrderMealServiceImpl.java @@ -498,4 +498,9 @@ this.baseMapper.deleteByShopId(shopId); } + @Override + public Map<String, Double> getDataGeneratorMealDetailOrderMoney(TDataGeneratorMealQuery query) { + return this.baseMapper.getDataGeneratorMealDetailOrderMoney(query); + } + } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TOrderSaleServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TOrderSaleServiceImpl.java index ff4d132..0a2a83d 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TOrderSaleServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TOrderSaleServiceImpl.java @@ -452,4 +452,39 @@ public void deleteByShopId(Long shopId) { this.baseMapper.deleteByShopId(shopId); } + + @Override + public Map<String, Double> getDataGeneratorSaleDetailOrderMoney(TDataGeneratorSaleQuery 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.getDataGeneratorSaleDetailOrderMoney(query); + } } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/vo/GoodsProfitVO.java b/ruoyi-system/src/main/java/com/ruoyi/system/vo/GoodsProfitVO.java index 565ff91..db6eae7 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/vo/GoodsProfitVO.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/vo/GoodsProfitVO.java @@ -25,14 +25,14 @@ private Integer totalSalesCount; @ApiModelProperty(value = "商品成本") - @Excel(name = "商品成本",width = 30) + @Excel(name = "商品成本",width = 30,isStatistics = true) private BigDecimal goodsCostAmount; @ApiModelProperty(value = "商品售价") - @Excel(name = "商品售价",width = 30) + @Excel(name = "商品售价",width = 30,isStatistics = true) private BigDecimal goodsSaleAmount; @ApiModelProperty(value = "商品盈利") - @Excel(name = "商品盈利",width = 30) + @Excel(name = "商品盈利",width = 30,isStatistics = true) private BigDecimal goodsProfitAmount; } diff --git a/ruoyi-system/src/main/resources/mapper/system/TOrderMealMapper.xml b/ruoyi-system/src/main/resources/mapper/system/TOrderMealMapper.xml index 26a16f8..959aab2 100644 --- a/ruoyi-system/src/main/resources/mapper/system/TOrderMealMapper.xml +++ b/ruoyi-system/src/main/resources/mapper/system/TOrderMealMapper.xml @@ -236,7 +236,8 @@ and tom.generatorId = #{query.generatorId} </if> <if test="query.startTime != null and query.startTime != '' and query.endTime != null and query.endTime != ''"> - AND (tom.mealTime BETWEEN #{query.startTime} AND #{query.endTime}) + AND (tom.mealTime BETWEEN CONCAT(DATE_FORMAT(#{query.startTime},'%Y-%m-%d %H:%i:%s'),' 00:00:00') + AND CONCAT(DATE_FORMAT(#{query.endTime},'%Y-%m-%d %H:%i:%s'),' 23:59:59')) </if> AND tom.disabled = ${@com.ruoyi.common.enums.DisabledEnum@NO.getCode()} </where> @@ -367,5 +368,29 @@ </where> GROUP BY tomg.goodsName </select> + <select id="getDataGeneratorMealDetailOrderMoney" resultType="java.util.Map"> + SELECT + IFNULL(SUM(CASE WHEN payType = 1 THEN orderMoney ELSE 0 END),0) AS moneyPay, + IFNULL(SUM(CASE WHEN payType = 2 THEN orderMoney ELSE 0 END),0) AS aliPay, + IFNULL(SUM(CASE WHEN payType = 3 THEN orderMoney ELSE 0 END),0) AS weiXinPay, + IFNULL(SUM(CASE WHEN payType = 4 THEN orderMoney ELSE 0 END),0) AS cardPay, + IFNULL(SUM(CASE WHEN payType = 5 THEN orderMoney ELSE 0 END),0) AS otherPay + from t_order_meal + <where> + <if test="query.generatorId != null"> + and generatorId = #{query.generatorId} + </if> + <if test="query.payType != null"> + and payType = #{query.payType} + </if> + <if test="query.generatorId != null"> + and generatorId = #{query.generatorId} + </if> + <if test="query.startTime != null and query.startTime != '' and query.endTime != null and query.endTime != ''"> + AND (mealTime BETWEEN #{query.startTime} AND #{query.endTime}) + </if> + AND disabled = ${@com.ruoyi.common.enums.DisabledEnum@NO.getCode()} + </where> + </select> </mapper> diff --git a/ruoyi-system/src/main/resources/mapper/system/TOrderSaleMapper.xml b/ruoyi-system/src/main/resources/mapper/system/TOrderSaleMapper.xml index 1f54fa8..cd91c05 100644 --- a/ruoyi-system/src/main/resources/mapper/system/TOrderSaleMapper.xml +++ b/ruoyi-system/src/main/resources/mapper/system/TOrderSaleMapper.xml @@ -315,5 +315,29 @@ </where> GROUP BY tomg.goodsName </select> + <select id="getDataGeneratorSaleDetailOrderMoney" resultType="java.util.Map"> + SELECT + IFNULL(SUM(CASE WHEN payType = 1 THEN orderMoney ELSE 0 END),0) AS moneyPay, + IFNULL(SUM(CASE WHEN payType = 2 THEN orderMoney ELSE 0 END),0) AS aliPay, + IFNULL(SUM(CASE WHEN payType = 3 THEN orderMoney ELSE 0 END),0) AS weiXinPay, + IFNULL(SUM(CASE WHEN payType = 4 THEN orderMoney ELSE 0 END),0) AS cardPay, + IFNULL(SUM(CASE WHEN payType = 5 THEN orderMoney ELSE 0 END),0) AS otherPay + from t_order_sale + <where> + <if test="query.generatorId != null"> + and generatorId = #{query.generatorId} + </if> + <if test="query.orderNum != null and query.orderNum != ''"> + AND orderNum LIKE concat('%', #{query.orderNum}, '%') + </if> + <if test="query.payType != null"> + and payType = #{query.payType} + </if> + <if test="query.startTime != null and query.startTime != '' and query.endTime != null and query.endTime != ''"> + AND (orderTime BETWEEN #{query.startTime} AND #{query.endTime}) + </if> + AND disabled = ${@com.ruoyi.common.enums.DisabledEnum@NO.getCode()} + </where> + </select> </mapper> diff --git "a/ruoyi-system/src/main/resources/template/\351\224\200\345\224\256\346\225\260\346\215\256\345\210\227\350\241\250.xls" "b/ruoyi-system/src/main/resources/template/\351\224\200\345\224\256\346\225\260\346\215\256\345\210\227\350\241\250.xls" new file mode 100644 index 0000000..1191fc9 --- /dev/null +++ "b/ruoyi-system/src/main/resources/template/\351\224\200\345\224\256\346\225\260\346\215\256\345\210\227\350\241\250.xls" Binary files differ diff --git "a/ruoyi-system/src/main/resources/template/\351\244\220\351\245\256\346\225\260\346\215\256\345\210\227\350\241\250.xls" "b/ruoyi-system/src/main/resources/template/\351\244\220\351\245\256\346\225\260\346\215\256\345\210\227\350\241\250.xls" new file mode 100644 index 0000000..badcfca --- /dev/null +++ "b/ruoyi-system/src/main/resources/template/\351\244\220\351\245\256\346\225\260\346\215\256\345\210\227\350\241\250.xls" Binary files differ -- Gitblit v1.7.1