增加KMS搜索后点击下载打开文档阅览界面

This commit is contained in:
zhaol 2024-11-01 14:53:18 +08:00
parent 85a8e3cdd9
commit bfd6504439
3 changed files with 166 additions and 5 deletions

View File

@ -77,6 +77,15 @@ public class KnwlSearchController {
return knwlSearchWeb.getUserList(term);
}
// 点击下载打开文档预览界面
@Mapping("com.actionsoft.apps.kms_knwl_filePreview")
public String filePreview(UserContext uc,String fileId) {
KnwlSearchWeb knwlSearchWeb = new KnwlSearchWeb(uc);
return knwlSearchWeb.filePreview(uc,fileId);
}
/**
* 全文检索查询
*

View File

@ -1,5 +1,6 @@
package com.actionsoft.apps.kms.web;
import java.io.File;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.nio.charset.StandardCharsets;
@ -12,6 +13,13 @@ import java.util.Iterator;
import java.util.List;
import java.util.Map;
import com.actionsoft.apps.coe.pal.pal.output.OutputAPIManager;
import com.actionsoft.apps.coe.pal.pal.output.dao.OutputTask;
import com.actionsoft.apps.coe.pal.pal.output.extend.OutputAppManager;
import com.actionsoft.apps.coe.pal.pal.output.extend.OutputAppProfile;
import com.actionsoft.apps.coe.pal.pal.output.model.OutputTaskModel;
import com.actionsoft.apps.coe.pal.pal.repository.cache.PALRepositoryCache;
import com.actionsoft.apps.coe.pal.pal.repository.model.PALRepositoryModel;
import com.actionsoft.apps.kms.KMSConstant;
import com.actionsoft.apps.kms.KMSUtil;
import com.actionsoft.apps.kms.ac.XpageMgrACCM;
@ -32,6 +40,8 @@ import com.actionsoft.apps.kms.service.MetaSchemaService;
import com.actionsoft.apps.kms.service.OptService;
import com.actionsoft.apps.kms.service.PublishService;
import com.actionsoft.apps.kms.service.SearchService;
import com.actionsoft.apps.resource.AppContext;
import com.actionsoft.bpms.bo.engine.BO;
import com.actionsoft.bpms.commons.database.RowMap;
import com.actionsoft.bpms.commons.htmlframework.AlertWindow;
import com.actionsoft.bpms.commons.htmlframework.HtmlPageTemplate;
@ -43,13 +53,12 @@ import com.actionsoft.bpms.org.cache.UserCache;
import com.actionsoft.bpms.org.model.DepartmentModel;
import com.actionsoft.bpms.org.model.UserModel;
import com.actionsoft.bpms.server.UserContext;
import com.actionsoft.bpms.util.DBSql;
import com.actionsoft.bpms.util.UUIDGener;
import com.actionsoft.bpms.util.UtilDate;
import com.actionsoft.bpms.util.UtilSerialize;
import com.actionsoft.bpms.util.UtilString;
import com.actionsoft.bpms.server.fs.DCContext;
import com.actionsoft.bpms.server.fs.dc.DCProfileManager;
import com.actionsoft.bpms.util.*;
import com.actionsoft.exception.AWSException;
import com.actionsoft.sdk.local.SDK;
import com.actionsoft.sdk.local.api.AppAPI;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.awspaas.user.apps.yili.reportform.util.RepositoryAttribute;
@ -594,6 +603,15 @@ public class KnwlSearchWeb extends ActionWeb {
}
/**
* 获取人员信息
* @param curPage
* @param rowsPerPage
* @param searchText
* @param docTypes
* @param searchType
* @return
*/
public String getUserList(int curPage, int rowsPerPage, String searchText, String docTypes, String searchType) {
ResponseObject ro = ResponseObject.newOkResponse();
JSONArray data = new JSONArray();
@ -660,6 +678,140 @@ public class KnwlSearchWeb extends ActionWeb {
return userJsonArray.toString();
}
/**
* 根据模型ID获取文档预览链接地址
* @param uc
* @param fileId
* @return
*/
public String filePreview(UserContext uc,String fileId) {
ResponseObject responseObject = ResponseObject.newOkResponse();
String sqls = "select taskId from (select * from BO_ACT_COE_PUBLISH_N where PUBLISHFILEID = '" + fileId
+ "' order by CREATEDATE desc) where rownum = 1";
String taskId = DBSql.getString(sqls);
String resultUrl=outputReportPreview(uc, taskId, fileId);
responseObject.setData(resultUrl);
return responseObject.toString();
}
public String outputReportPreview(UserContext _uc, String taskId, String palId) {
String returnUrl="";
String sql = "select * from App_Act_Coe_Pal_Repository where id = '" + palId + "' ";
RowMap map = DBSql.getMap(sql);
if (map != null) {
String ispulish = map.getString("ISPUBLISH");
String palname = map.getString("PLNAME");
String methodid = map.getString("PLMETHODID");
String plparid = map.getString("PLPARENTID");
if ("1".equals(ispulish)) {
// if ("control.policy".equals(methodid)) {
if ("control.policy".equals(methodid) || "data.form".equals(methodid) || "process.epc".equals(methodid)
|| "process.flowchart".equals(methodid) || "process.scheme".equals(methodid) || "engineering.standard".equals(methodid)) {
try {
OutputTaskModel model = new OutputTask().getTaskReportById(taskId);
ResponseObject result = ResponseObject.newOkResponse();
if (model != null) {
UtilFile file = OutputAPIManager.getInstance().getFilePath(model.getWsId(), taskId,
model.getProfileId());
if (file.exists()) {
File[] fileList = file.listFiles();
if (fileList.length > 0) {
File docFile = null;
for (File file2 : fileList) {
if (file2.isFile() && "doc".equals(
(file2.getName().substring(file2.getName().lastIndexOf(".") + 1)))) {
docFile = file2;
break;
}
}
if (docFile == null) {
result = ResponseObject.newErrResponse("没有手册文件!");
}
if (SDK.getAppAPI().isActive("com.actionsoft.apps.addons.onlinedoc")) {
OutputAppProfile appFile = OutputAppManager.getProfile(model.getProfileId());
String sourceAppId = appFile.getAppContext().getId();
String filename = docFile.getName();
System.err.println("开始转换===>" + filename + "===>" + sourceAppId);
DCContext sourceDc = new DCContext(_uc,
DCProfileManager.getDCProfile(sourceAppId, "output"), sourceAppId,
model.getWsId(), taskId, filename);
// 调用App
// aslp服务地址
String aslp = "aslp://com.actionsoft.apps.addons.onlinedoc/fileConvert";
// 参数定义列表
HashMap<String, Object> params = new HashMap<String, Object>();
// PDF转图片处理选项- 0代表只在需要时做转换- 1代表打开即检查是否已转换成图片如未处理强制转换默认0,非必填
params.put("isPDFCovertPNG", "0");
// 原文件DC,必填
params.put("sourceDc", sourceDc);
// 文档是否允许复制true为允许复制转换结果为PDF格式文件false为不可复制转换结果为PNG格式文件注意参数值为false时转换时间稍长,必填
params.put("isCopy", true);
// sessionid,必填
params.put("sid", _uc.getSessionId());
AppAPI appAPI = SDK.getAppAPI();
// 调用转换服务.在预览之前提前进行转换预览时直接打开转换后的文件
String sourceId = "com.actionsoft.apps.coe.pal.publisher";
AppContext appContext = appAPI.getAppContext(sourceId);
ResponseObject responseObject = appAPI.callASLP(appContext, aslp, params);
System.err.println("转换结果=======>" + responseObject);
if (responseObject != null) {
String results = responseObject.toString();
if (UtilString.isNotEmpty(results)) {
if (results.contains("200")) {
Map<String, Object> aslpParams = new HashMap<String, Object>();
aslpParams.put("sid", _uc.getSessionId());
aslpParams.put("fileNameOriginal", filename);
aslpParams.put("sourceDc", sourceDc);
aslpParams.put("isShowDefaultToolbar", true);
aslpParams.put("isShowBackbtn", false);
aslpParams.put("isEncrypt", true);
aslpParams.put("isCopy", true);
aslpParams.put("isPrint", true);
aslpParams.put("isDownload", true);
ResponseObject responseObjects = appAPI.callASLP(
appAPI.getAppContext(sourceAppId),
"aslp://com.actionsoft.apps.addons.onlinedoc/filePreview",
aslpParams);
if (responseObjects != null) {
if (responseObjects.isOk()) {
String url = responseObjects.get("url").toString();
returnUrl= url.substring(url.indexOf("&cmd"));
}
}
} else {
result = ResponseObject.newErrResponse("文档转换服务不可用,请联系管理员");
}
}
}
}
}
}
}
} catch (Exception e) {
} finally {
}
}
}
}
return returnUrl;
}
public String openEsSearchPage(String q) {
Map<String, Object> macroLibraries = new HashMap<String, Object>();
macroLibraries.put("sid", super.getContext().getSessionId());