package com.ruoyi.web.controller.api;
|
|
|
import cn.afterturn.easypoi.excel.ExcelExportUtil;
|
import cn.afterturn.easypoi.excel.entity.ExportParams;
|
import com.ruoyi.common.basic.PageInfo;
|
import com.ruoyi.common.constant.OrderNumConstants;
|
import com.ruoyi.common.core.domain.AjaxResult;
|
import com.ruoyi.common.core.redis.RedisCache;
|
import com.ruoyi.common.utils.DateUtils;
|
import com.ruoyi.common.utils.WebUtils;
|
import com.ruoyi.framework.web.service.TokenService;
|
import com.ruoyi.system.domain.TOrderSaleGoods;
|
import com.ruoyi.system.domain.TOrderStockGoods;
|
import com.ruoyi.system.dto.OrderMealGeneratorDTO;
|
import com.ruoyi.system.dto.OrderSaleGeneratorDTO;
|
import com.ruoyi.system.export.TOrderMealExportExcel;
|
import com.ruoyi.system.export.TOrderSaleAndGoodsExportExcel;
|
import com.ruoyi.system.export.TOrderStockExportExcel;
|
import com.ruoyi.system.query.TDataGeneratorMealQuery;
|
import com.ruoyi.system.query.TDataGeneratorQuery;
|
import com.ruoyi.system.query.TDataGeneratorSaleQuery;
|
import com.ruoyi.system.query.TDataGeneratorStockQuery;
|
import com.ruoyi.system.service.TDataGeneratorService;
|
import com.ruoyi.system.service.TOrderMealService;
|
import com.ruoyi.system.service.TOrderSaleService;
|
import com.ruoyi.system.service.TOrderStockService;
|
import com.ruoyi.system.vo.*;
|
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.validation.annotation.Validated;
|
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.stream.Collectors;
|
|
/**
|
* <p>
|
* 营业数据生成 前端控制器
|
* </p>
|
*
|
* @author xiaochen
|
* @since 2024-08-27
|
*/
|
@RestController
|
@RequestMapping("/t-data-generator")
|
public class TDataGeneratorController {
|
|
private final TOrderMealService orderMealService;
|
private final TOrderSaleService orderSaleService;
|
private final TOrderStockService orderStockService;
|
private final TDataGeneratorService dataGeneratorService;
|
private final TokenService tokenService;
|
private final RedisCache redisCache;
|
|
@Autowired
|
public TDataGeneratorController(TOrderMealService orderMealService, TOrderSaleService orderSaleService, TOrderStockService orderStockService, TDataGeneratorService dataGeneratorService, TokenService tokenService, RedisCache redisCache) {
|
this.orderMealService = orderMealService;
|
this.orderSaleService = orderSaleService;
|
this.orderStockService = orderStockService;
|
this.dataGeneratorService = dataGeneratorService;
|
this.tokenService = tokenService;
|
this.redisCache = redisCache;
|
}
|
|
@ApiOperation( value = "餐饮数据生成")
|
@PostMapping(value = "/mealDataGenerator")
|
public AjaxResult<String> mealDataGenerator(@RequestBody OrderMealGeneratorDTO dto) {
|
dto.setUserId(tokenService.getLoginUser().getUserId());
|
dto.setNickName(tokenService.getLoginUser().getNickName());
|
dataGeneratorService.mealDataGenerator(dto);
|
return AjaxResult.success();
|
}
|
|
@ApiOperation( value = "销售数据生成")
|
@PostMapping(value = "/saleDataGenerator")
|
public AjaxResult<String> saleDataGenerator(@RequestBody OrderSaleGeneratorDTO dto) {
|
dto.setUserId(tokenService.getLoginUser().getUserId());
|
dto.setNickName(tokenService.getLoginUser().getNickName());
|
dataGeneratorService.saleDataGenerator(dto);
|
return AjaxResult.success();
|
}
|
|
@ApiOperation( value = "数据生成分页")
|
@PostMapping(value = "/pageList")
|
public AjaxResult<PageInfo<TDataGeneratorVO>> pageList(@Validated @RequestBody TDataGeneratorQuery query) {
|
return AjaxResult.success(dataGeneratorService.pageList(query));
|
}
|
|
@ApiOperation( value = "数据覆盖")
|
@GetMapping(value = "/dataCoverage")
|
public AjaxResult<String> dataCoverage(@RequestParam(value = "id") Long id) {
|
dataGeneratorService.dataCoverage(id);
|
return AjaxResult.success();
|
}
|
|
@ApiOperation( value = "数据生成终止 shopId=店铺id type: 1=餐饮 2=进货")
|
@GetMapping(value = "/stopGenerator")
|
public AjaxResult<String> dataCoverage(@RequestParam(value = "shopId") Long shopId,
|
@RequestParam(value = "type") Integer type) {
|
if(type == 1){
|
redisCache.setCacheObject(OrderNumConstants.MEAL+"_"+shopId,shopId);
|
}else {
|
redisCache.setCacheObject(OrderNumConstants.STOCK+"_"+shopId,shopId);
|
}
|
return AjaxResult.success();
|
}
|
|
@ApiOperation( value = "餐饮生成数据详情")
|
@PostMapping(value = "/mealGeneratorDataDetail")
|
public AjaxResult<TDataGeneratorMealDetailVO> mealGeneratorDataDetail(@Validated @RequestBody TDataGeneratorMealQuery query) {
|
return AjaxResult.success(dataGeneratorService.mealGeneratorDataDetail(query));
|
}
|
|
@ApiOperation( value = "销售生成数据详情")
|
@PostMapping(value = "/saleGeneratorDataDetail")
|
public AjaxResult<TDataGeneratorSaleDetailVO> saleGeneratorDataDetail(@Validated @RequestBody TDataGeneratorSaleQuery query) {
|
return AjaxResult.success(dataGeneratorService.saleGeneratorDataDetail(query));
|
}
|
|
@ApiOperation( value = "进货生成数据详情")
|
@PostMapping(value = "/stockGeneratorDataDetail")
|
public AjaxResult<TDataGeneratorStockDetailVO> stockGeneratorDataDetail(@Validated @RequestBody TDataGeneratorStockQuery query) {
|
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.localDateTimeToString(orderMealVO.getCreateTime()));
|
tOrderMealExportExcel.setGoodsList(orderMealVO.getGoodsList().stream().collect(Collectors.joining("\n")));
|
}
|
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 = "/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::getSalePrice).reduce(BigDecimal::add).get());
|
}
|
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")
|
public void stockGeneratorExport(@Validated @RequestBody TDataGeneratorStockQuery query) {
|
List<TOrderStockVO> list = orderStockService.stockGeneratorExport(query);
|
List<TOrderStockExportExcel> orderStockExportExcels = new ArrayList<>();
|
for (TOrderStockVO orderStockVO : list) {
|
TOrderStockExportExcel orderStockExportExcel = new TOrderStockExportExcel();
|
BeanUtils.copyProperties(orderStockVO, orderStockExportExcel);
|
orderStockExportExcel.setGoodsAmount(orderStockVO.getOrderStockGoods().stream().map(TOrderStockGoods::getSalePrice).reduce(BigDecimal::add).get());
|
orderStockExportExcel.setStockTime(DateUtils.localDateToString(orderStockVO.getStockTime()));
|
}
|
Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams(), TOrderStockExportExcel.class, orderStockExportExcels);
|
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();
|
}
|
}
|
}
|
|
|
}
|