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> <!-- 阿里云短信 --> 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") 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; 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; ruoyi-system/src/main/java/com/ruoyi/system/export/MealGeneratorClient.java
New file @@ -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; } 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"}) ruoyi-system/src/main/java/com/ruoyi/system/export/SaleGeneratorClient.java
New file @@ -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; } 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"}) 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"}) ruoyi-system/src/main/java/com/ruoyi/system/export/TOrderMealExportExcelTempLate.java
New file @@ -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; } 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; } ruoyi-system/src/main/java/com/ruoyi/system/export/TOrderSaleAndGoodsExportExcelTemplate.java
New file @@ -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; } 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"}) 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; } 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); } 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); } 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); } 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); } 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); } } 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); } } 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; } 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> 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> ruoyi-system/src/main/resources/template/销售数据列表.xlsBinary files differ
ruoyi-system/src/main/resources/template/餐饮数据列表.xlsBinary files differ