模板文件填充接口

This commit is contained in:
Administrator 2025-05-08 10:16:25 +08:00
parent 457133202b
commit b09e3afd70
5 changed files with 204 additions and 0 deletions

View File

@ -0,0 +1,41 @@
package com.weaver.seconddev.jcl.organization.controller;
import com.weaver.common.authority.annotation.WeaPermission;
import com.weaver.common.base.entity.result.WeaResult;
import com.weaver.eteams.file.client.file.FileCapabilityResult;
import com.weaver.seconddev.jcl.organization.entity.ContractData;
import com.weaver.seconddev.jcl.organization.service.ContractManageService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import java.util.Map;
@RestController
@RequestMapping("/api/secondev/jcl/contractManagement")
public class ContractManageController {
private static final Logger log = LoggerFactory.getLogger(ContractManageController.class);
@Autowired
private ContractManageService contractManageService;
/**
* 书签套用
* @return
*/
@WeaPermission(publicPermission = true)
@Produces(MediaType.APPLICATION_JSON)
@PostMapping("/convertOfferFileByFileId")
public WeaResult<FileCapabilityResult> convertOfferFileByFileId(
@RequestBody ContractData contractData){
log.error("convertOfferFileByFileId.contractData:{}",contractData);
String fileId = contractData.getFileId();
String fileNameTemplate = contractData.getFileNameTemplate();
Map<String, Object> dataMap = contractData.getDataMap();
return contractManageService.convertOfferFileByFileId(Long.valueOf(fileId), fileNameTemplate, dataMap);
}
}

View File

@ -0,0 +1,23 @@
package com.weaver.seconddev.jcl.organization.entity;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* Bookmark
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class Bookmark {
private String bookmark;
private String bookmark_type;
private String bookmark_content;
}

View File

@ -0,0 +1,25 @@
package com.weaver.seconddev.jcl.organization.entity;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Map;
/**
* ContractData
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ContractData {
private String fileId;
private String fileNameTemplate;
private Map<String, Object> dataMap;
}

View File

@ -0,0 +1,11 @@
package com.weaver.seconddev.jcl.organization.service;
import com.weaver.common.base.entity.result.WeaResult;
import com.weaver.eteams.file.client.file.FileCapabilityResult;
import java.util.Map;
public interface ContractManageService {
WeaResult<FileCapabilityResult> convertOfferFileByFileId(Long fileId, String fileNameTemplate, Map<String, Object> dataMap);
}

View File

@ -0,0 +1,104 @@
package com.weaver.seconddev.jcl.organization.service.impl;
import cn.hutool.core.convert.Convert;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSON;
import com.weaver.common.base.entity.result.WeaResult;
import com.weaver.eteams.file.client.file.FileCapabilityParam;
import com.weaver.eteams.file.client.file.FileCapabilityResult;
import com.weaver.eteams.file.client.param.FileCovertParam;
import com.weaver.eteams.file.client.param.FileReplaceParamVo;
import com.weaver.eteams.file.client.remote.OfficialFileConvertService;
import com.weaver.framework.rpc.annotation.RpcReference;
import com.weaver.seconddev.jcl.organization.controller.EmployeeRelationController;
import com.weaver.seconddev.jcl.organization.entity.Bookmark;
import com.weaver.seconddev.jcl.organization.service.ContractManageService;
import com.weaver.teams.security.context.UserContext;
import com.weaver.teams.security.user.User;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;
import java.util.*;
@Service
public class ContractManageServiceImpl implements ContractManageService {
private static final Logger log = LoggerFactory.getLogger(EmployeeRelationController.class);
@RpcReference
OfficialFileConvertService officialFileConvertService;
@Override
public WeaResult<FileCapabilityResult> convertOfferFileByFileId(Long fileId, String fileNameTemplate, Map<String, Object> dataMap) {
//查询书签
List<Bookmark> bookmarks = queryDocBookmarks(fileId);
log.error("convertOfferFileByFileId.bookmarks:{}",bookmarks);
//赋值书签
List<FileReplaceParamVo.BookmarkReplace> bookmarkReplaces = new ArrayList<>();
for (Bookmark bookmark : bookmarks) {
String bookmarkName = bookmark.getBookmark();
if (StrUtil.isBlank(bookmarkName)) {
continue;
}
//重名书签使用两个下划线+任意序号分开不使用一个下划线是为了兼容可能的按数据库字段key名称替换
bookmarkName = bookmarkName.split("__")[0];
String data = Convert.toStr(dataMap.get(bookmarkName), "-");
//构建书签替换参数
FileReplaceParamVo.BookmarkReplace bookmarkReplace = new FileReplaceParamVo.BookmarkReplace();
bookmarkReplace.setType("TEXT");
bookmarkReplace.setBookmark(bookmark.getBookmark());
bookmarkReplace.setText(data);
bookmarkReplaces.add(bookmarkReplace);
}
log.error("convertOfferFileByFileId.bookmarkReplaces:{}",bookmarkReplaces);
String fileName = fileNameTemplate;
//文件名称自定义
for (Map.Entry<String, Object> entry : dataMap.entrySet()) {
String k = entry.getKey();
Object v = entry.getValue();
fileName = fileName.replace("{" + k + "}", Convert.toStr(v, ""));
}
fileName = fileName + ".pdf";
FileCapabilityParam capabilityParam = new FileCapabilityParam();
capabilityParam.setOption("COMPOSITE");
//1套用 2输出pdf
capabilityParam.setSteps(Arrays.asList("REPLACE", "CONVERT"));
capabilityParam.setFileId(fileId);
capabilityParam.setResultFileName(fileName);
capabilityParam.setUserId(String.valueOf(UserContext.getCurrentUser().getEmployeeId()));
capabilityParam.setModule("ebuilderform");
capabilityParam.setTemporaryFile(true);//设置为临时文件使用复制附件联动功能实现赋值
//书签套用参数
FileReplaceParamVo fileReplaceParam = new FileReplaceParamVo();
fileReplaceParam.setBookmarkReplaces(bookmarkReplaces);
capabilityParam.setFileReplaceParam(fileReplaceParam);
//文档转换参数
FileCovertParam fileCovertParam = new FileCovertParam();
fileCovertParam.setTargetType("pdf");
capabilityParam.setFileCovertParam(fileCovertParam);
log.error("convertOfferFileByFileId.capabilityParam:{}",capabilityParam);
WeaResult<FileCapabilityResult> result = officialFileConvertService.capabilityFile(capabilityParam);
// if (result.getData() != null) {
// ConvertedFileCapabilityResult converted = ConvertedFileCapabilityResult.convert(result.getData(), fileName);
// result.setData(converted);
// }
log.error("convertOfferFileByFileId.result:{}",result);
return result;
}
private List<Bookmark> queryDocBookmarks(Long fileId) {
FileCapabilityParam queryBookmarkParam = new FileCapabilityParam();
queryBookmarkParam.setOption("BOOKMARK");
queryBookmarkParam.setFileId(fileId);
User currentUser = UserContext.getCurrentUser();
//queryBookmarkParam.setUserId(RecruitModuleUtils.getCurrentUserIdStr());
queryBookmarkParam.setUserId(String.valueOf(currentUser.getEmployeeId()));
queryBookmarkParam.setModule("ebuilderform");
WeaResult<FileCapabilityResult> result = officialFileConvertService.capabilityFile(queryBookmarkParam);
String bookmarksJSON = JSON.toJSONString(result.getData().getData());
log.info("书签内容 {}", bookmarksJSON);
return JSON.parseArray(bookmarksJSON, Bookmark.class);
}
}