diff --git a/jcl-hrmorganization/secondev-jcl-hrmorganization/src/main/java/com/weaver/seconddev/jcl/organization/controller/ContractManageController.java b/jcl-hrmorganization/secondev-jcl-hrmorganization/src/main/java/com/weaver/seconddev/jcl/organization/controller/ContractManageController.java new file mode 100644 index 0000000..7c91d63 --- /dev/null +++ b/jcl-hrmorganization/secondev-jcl-hrmorganization/src/main/java/com/weaver/seconddev/jcl/organization/controller/ContractManageController.java @@ -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 convertOfferFileByFileId( + @RequestBody ContractData contractData){ + log.error("convertOfferFileByFileId.contractData:{}",contractData); + String fileId = contractData.getFileId(); + String fileNameTemplate = contractData.getFileNameTemplate(); + Map dataMap = contractData.getDataMap(); + return contractManageService.convertOfferFileByFileId(Long.valueOf(fileId), fileNameTemplate, dataMap); +} + +} \ No newline at end of file diff --git a/jcl-hrmorganization/secondev-jcl-hrmorganization/src/main/java/com/weaver/seconddev/jcl/organization/entity/Bookmark.java b/jcl-hrmorganization/secondev-jcl-hrmorganization/src/main/java/com/weaver/seconddev/jcl/organization/entity/Bookmark.java new file mode 100644 index 0000000..9fbd674 --- /dev/null +++ b/jcl-hrmorganization/secondev-jcl-hrmorganization/src/main/java/com/weaver/seconddev/jcl/organization/entity/Bookmark.java @@ -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; +} diff --git a/jcl-hrmorganization/secondev-jcl-hrmorganization/src/main/java/com/weaver/seconddev/jcl/organization/entity/ContractData.java b/jcl-hrmorganization/secondev-jcl-hrmorganization/src/main/java/com/weaver/seconddev/jcl/organization/entity/ContractData.java new file mode 100644 index 0000000..6aebe99 --- /dev/null +++ b/jcl-hrmorganization/secondev-jcl-hrmorganization/src/main/java/com/weaver/seconddev/jcl/organization/entity/ContractData.java @@ -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 dataMap; +} diff --git a/jcl-hrmorganization/secondev-jcl-hrmorganization/src/main/java/com/weaver/seconddev/jcl/organization/service/ContractManageService.java b/jcl-hrmorganization/secondev-jcl-hrmorganization/src/main/java/com/weaver/seconddev/jcl/organization/service/ContractManageService.java new file mode 100644 index 0000000..204c4ef --- /dev/null +++ b/jcl-hrmorganization/secondev-jcl-hrmorganization/src/main/java/com/weaver/seconddev/jcl/organization/service/ContractManageService.java @@ -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 convertOfferFileByFileId(Long fileId, String fileNameTemplate, Map dataMap); + +} diff --git a/jcl-hrmorganization/secondev-jcl-hrmorganization/src/main/java/com/weaver/seconddev/jcl/organization/service/impl/ContractManageServiceImpl.java b/jcl-hrmorganization/secondev-jcl-hrmorganization/src/main/java/com/weaver/seconddev/jcl/organization/service/impl/ContractManageServiceImpl.java new file mode 100644 index 0000000..0284ff4 --- /dev/null +++ b/jcl-hrmorganization/secondev-jcl-hrmorganization/src/main/java/com/weaver/seconddev/jcl/organization/service/impl/ContractManageServiceImpl.java @@ -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 convertOfferFileByFileId(Long fileId, String fileNameTemplate, Map dataMap) { + //查询书签 + List bookmarks = queryDocBookmarks(fileId); + log.error("convertOfferFileByFileId.bookmarks:{}",bookmarks); + //赋值书签 + List 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 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 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 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 result = officialFileConvertService.capabilityFile(queryBookmarkParam); + String bookmarksJSON = JSON.toJSONString(result.getData().getData()); + log.info("书签内容 {}", bookmarksJSON); + return JSON.parseArray(bookmarksJSON, Bookmark.class); + } + + +}