package com.ruoyi.sales.controller;
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.ruoyi.common.utils.poi.ExcelUtil;
|
import com.ruoyi.framework.aspectj.lang.annotation.Log;
|
import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
|
import com.ruoyi.framework.web.domain.AjaxResult;
|
import com.ruoyi.sales.dto.SalesQuotationDto;
|
import com.ruoyi.sales.service.SalesQuotationService;
|
import lombok.extern.slf4j.Slf4j;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.multipart.MultipartFile;
|
|
import javax.servlet.http.HttpServletResponse;
|
import java.io.FileNotFoundException;
|
import java.io.IOException;
|
import java.io.InputStream;
|
import java.io.OutputStream;
|
import java.net.URLEncoder;
|
|
@RestController
|
@RequestMapping("/sales/quotation")
|
@Slf4j
|
public class SalesQuotationController {
|
@Autowired
|
private SalesQuotationService salesQuotationService;
|
@GetMapping("/list")
|
public AjaxResult getList(Page page, SalesQuotationDto salesQuotationDto) {
|
return AjaxResult.success(salesQuotationService.listPage(page, salesQuotationDto));
|
}
|
|
|
@PostMapping("/export")
|
public void export(HttpServletResponse response) {
|
Page page = new Page(-1,-1);
|
SalesQuotationDto afterSalesService = new SalesQuotationDto();
|
IPage<SalesQuotationDto> listPage = salesQuotationService.listPage(page, afterSalesService);
|
ExcelUtil<SalesQuotationDto> util = new ExcelUtil<SalesQuotationDto>(SalesQuotationDto.class);
|
util.exportExcel(response, listPage.getRecords() , "销售报价");
|
}
|
|
|
@PostMapping("/add")
|
public AjaxResult add(@RequestBody SalesQuotationDto salesQuotationDto) {
|
return AjaxResult.success(salesQuotationService.add(salesQuotationDto));
|
}
|
@PostMapping("/update")
|
@Log(title = "报价更新", businessType = BusinessType.UPDATE)
|
public AjaxResult update(@RequestBody SalesQuotationDto salesQuotationDto) {
|
return AjaxResult.success(salesQuotationService.edit(salesQuotationDto));
|
}
|
@DeleteMapping("/delete")
|
public AjaxResult delete(@RequestBody Long id) {
|
return AjaxResult.success(salesQuotationService.delete(id));
|
}
|
|
@PostMapping("/downloadTemplate")
|
public void exportTemplate(HttpServletResponse response) {
|
// 1. 模板文件在resources/static下的路径
|
String templatePath = "static/销售报价导入模板.xlsx";
|
|
// 2. 获取模板文件的输入流
|
try (InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream(templatePath)) {
|
if (inputStream == null) {
|
throw new FileNotFoundException("模板文件不存在:" + templatePath);
|
}
|
|
// 3. 设置响应头,触发浏览器下载
|
response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
|
response.setCharacterEncoding("utf-8");
|
String fileName = URLEncoder.encode("销售报价导入模板.xlsx", "utf-8").replaceAll("\\+", "%20");
|
response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName);
|
|
// 4. 将模板文件写入响应输出流
|
try (OutputStream outputStream = response.getOutputStream()) {
|
byte[] buffer = new byte[1024];
|
int len;
|
while ((len = inputStream.read(buffer)) > 0) {
|
outputStream.write(buffer, 0, len);
|
}
|
outputStream.flush();
|
}
|
} catch (IOException e) {
|
log.error("导出销售报价模板失败", e);
|
// 若模板文件读取失败,返回错误提示
|
try {
|
response.getWriter().write("模板导出失败:" + e.getMessage());
|
} catch (IOException ex) {
|
log.error("响应输出错误", ex);
|
}
|
}
|
}
|
|
@PostMapping("/import")
|
public AjaxResult importData(@RequestParam("file") MultipartFile file, @RequestParam("approveUserIdsJson") String approveUserIdsJson) {
|
return AjaxResult.success(salesQuotationService.importData(file, approveUserIdsJson));
|
}
|
}
|