基于ruoyi框架实现导出合同模板功能
由于公司项目需要,开发了这一块儿有关的合同导出功能,目前此类块儿功能应该是挺多都需要的,以此来记录一下实现过程。以便日后的使用;
首先介绍后端设计
实体类就是根据模板情况自行设计;我们主要介绍业务逻辑(service)的处理,以及controller;
public interface ISalesOrderService {
/**
* 合同导出
* @return
*/
byte[] exportContact( Long saleOrderId, Long contractId);
}
参数分别为销售订单id(saleOrderId),和合同模板id(contractId)
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.io.FileUtil;
import com.deepoove.poi.XWPFTemplate;
import com.deepoove.poi.config.Configure;
import com.deepoove.poi.plugin.table.LoopRowTableRenderPolicy;
import javax.annotation.Resource;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.*;
import java.util.stream.Collectors;
public class SalesOrderServiceImpl implements ISalesOrderService {
@SneakyThrows
@Override
public byte[] exportContact(Long saleOrderId, Long contractId) {
// 查询 contract 模板信息
String filePath = salesOrderMapper.queryContractTemplatePathById(contractId);
// 受权限影响 filePath 有 /profile 前缀
filePath = filePath.replaceAll(Constants.RESOURCE_PREFIX + "/", "");
File file = FileUploadUtils.getAbsoluteFile