commit 18b215fff64731d4735bf49d635f773d2561991f Author: pioneer Date: Tue Nov 15 16:23:18 2022 +0800 open diff --git a/README.md b/README.md new file mode 100644 index 0000000..ff65329 --- /dev/null +++ b/README.md @@ -0,0 +1,6 @@ +# open-JSD-10009 + +JSD-10009 单点登录和文档预览接口集成到帆软的按钮事件,实现对文档进行带水印的预览\ +免责说明:该源码为第三方爱好者提供,不保证源码和方案的可靠性,也不提供任何形式的源码教学指导和协助!\ +仅作为开发者学习参考使用!禁止用于任何商业用途!\ +为保护开发者隐私,开发者信息已隐去!若原开发者希望公开自己的信息,可联系【pioneer】处理。 \ No newline at end of file diff --git a/conf/edoConfig.properties b/conf/edoConfig.properties new file mode 100644 index 0000000..1b9a6a0 --- /dev/null +++ b/conf/edoConfig.properties @@ -0,0 +1,6 @@ +EDOURL=http://xxxxxx +EDOKEY=xxxxx +DEFAULT_NAME=xxx +TOKEN_IP=xxxxx +BATCH_URL=http://xxxxx +SEARCH_URL=http://xxxxx \ No newline at end of file diff --git a/hy_file_mobile/dist/index.dev.js b/hy_file_mobile/dist/index.dev.js new file mode 100644 index 0000000..08655b1 --- /dev/null +++ b/hy_file_mobile/dist/index.dev.js @@ -0,0 +1,108 @@ +"use strict"; + +var initHyJs = function initHyJs() { + var util = { + postJSON: function postJSON(url, data, callback, _error) { + url = FR.servletURL + url; + FR.ajax({ + type: "POST", + url: url, + contentType: "application/json; charset=utf-8", + data: JSON.stringify(data), + success: function success(resp) { + callback != undefined && callback(JSON.parse(resp)); + }, + error: function error(err) { + _error != undefined && _error(err); + } + }); + }, + get: function get(url, data, callback, _error2) { + url = FR.servletURL + url; + FR.ajax({ + type: "GET", + url: url, + data: data, + success: function success(resp) { + callback != undefined && callback(JSON.parse(resp)); + }, + error: function error(err) { + _error2 != undefined && _error2(err); + } + }); + } + }; + window["EDO"] = { + "downloadFile": function downloadFile(fileId, verId, userName) { + //下载 + var url = "/edo/download?fileId=" + fileId + "&verId=" + verId + "&edocName=" + userName; + util.get(url, {}, function (res) { + console.log("下载返回结果:" + JSON.stringify(res)); + + if (!res.errorCode) { + window.open(res.data); + } else { + FR.Msg.toast(res.errorMsg); + } + }); + }, + "priviewFile": function priviewFile(fileId, userName) { + //预览 + var url = "/edo/priview?fileId=" + fileId + "&edocName=" + userName; + util.get(url, {}, function (res) { + console.log("预览返回结果:" + JSON.stringify(res)); + + if (!res.errorCode) { + window.open(res.data); + } else { + FR.Msg.toast(res.errorMsg); + } + }); + }, + "deleteFiles": function deleteFiles(fileIds, callback, userName) { + //删除 + var url = "/edo/remove" + "?edocName=" + userName; + util.postJSON(url, fileIds, function () { + callback && callback(); + }); + }, + "batchDownload": function batchDownload(fileIds, folders, userName) { + //批量下载 + var url = "/edo/batch/download" + "?edocName=" + userName; + util.postJSON(url, { + fileIds: fileIds, + folders: folders + }, function (res) { + console.log("批量下载返回结果:" + JSON.stringify(res)); + + if (!res.errorCode) { + window.open(res.data); + } else { + FR.Msg.toast(res.errorMsg); + } + }); + }, + "fileManager": function fileManager(folderId, userName, callback) { + var url = "/edo/file/manager?" + "folderId=" + folderId + "&edocName=" + userName; + util.get(url, {}, function (res) { + if (!res.errorCode) { + if ($.isFunction(callback)) { + callback(res); + } else { + window.open(res.data); + } + } else { + FR.Msg.toast(res.errorMsg); + } + }); + } + }; + + console.log("FR.EDO init complted"); +}; + +initHyJs(); + +var test = function test() { + alert("aaaaa"); +}; \ No newline at end of file diff --git a/hy_file_mobile/index.js b/hy_file_mobile/index.js new file mode 100644 index 0000000..093dd7a --- /dev/null +++ b/hy_file_mobile/index.js @@ -0,0 +1,178 @@ + +var initHyJs = function () { + var util = { + isMobile: function () { + try { + if (/Android|webOS|iPhone|iPod|BlackBerry/i.test(navigator.userAgent)) { + return true; + } else { + return false; + } + } catch (e) { + return false; + } + }, + isAndroidMobile: function () { + try { + if (/Android/i.test(navigator.userAgent)) { + return true; + } else { + return false; + } + } catch (e) { + return false; + } + }, + postJSON: function (url, data, callback, error) { + url = FR.servletURL + url; + FR.ajax({ + type: "POST", + url: url, + contentType: "application/json; charset=utf-8", + data: JSON.stringify(data), + success: function (resp) { + callback != undefined && callback(JSON.parse(resp)); + }, + error: function (err) { + error != undefined && error(err); + } + }) + }, + get: function (url, data, callback, error) { + url = FR.servletURL + url; + FR.ajax({ + type: "GET", + url: url, + data: data, + success: function (resp) { + callback != undefined && callback(JSON.parse(resp)); + }, + error: function (err) { + error != undefined && error(err); + } + }) + } + }; + + window["EDO"] = { + "downloadFile":function (fileId, verId, userName) {//下载 + if (util.isAndroidMobile()) { + console.log("android platform") + var url = "/edo/getDownloadUrlFr?fileId=" + fileId + "&verId=" + verId + "&edocName=" + userName; + util.get(url, {}, function (res) { + console.log("下载返回结果:" + JSON.stringify(res)) + if (!res.errorCode) { + var newUrl = location.protocol+"//"+ location.host+"/webroot/decision/edo/downloadFileFr?downFileName="+res.data; + // alert("下载地址为:"+newUrl) + window.open(newUrl) + // window.location.href = newUrl; + } else { + FR.Msg.toast(res.errorMsg); + } + }); + } + else { + console.log("not android platform") + var url = "/edo/download?fileId=" + fileId + "&verId=" + verId + "&edocName=" + userName; + util.get(url, {}, function (res) { + // FR.Msg.toast(res.data) + console.log("下载返回结果:" + JSON.stringify(res)) + if (!res.errorCode) { + //window.open(res.data) + window.location.href = res.data; + } else { + FR.Msg.toast(res.errorMsg); + } + }); + } + }, + "priviewFile": function (fileId, userName) { //预览 + var url = "/edo/priview?fileId=" + fileId + "&edocName=" + userName; + + util.get(url, {}, function (res) { + + if (!res.errorCode) { + + window.location=res.data; + } else { + FR.Msg.toast(res.errorMsg); + } + },function(err){ + + FR.Msg.toast("err:"+err); + }); + }, + "deleteFiles":function (fileIds, callback, userName) { //删除 + var url = "/edo/remove" + "?edocName=" + userName; + + util.postJSON(url, fileIds, function () { + callback && callback(); + }) + + }, + "batchDownload": function (fileIds, folders, userName) { //批量下载 + if (util.isAndroidMobile()) { + console.log("android platform") + var url = "/edo/batch/downloadFr" + "?edocName=" + userName; + util.postJSON(url, { fileIds: fileIds, folders: folders }, function (res) { + console.log("批量下载返回结果:" + JSON.stringify(res)) + if (!res.errorCode) { + var newUrl = location.protocol+"//"+ location.host+"/webroot/decision/edo/downloadFileFr?downFileName="+res.data; + console.log("下载地址为:"+newUrl) + // window.open(newUrl) + window.location=newUrl; + // window.open(res.data) + } else { + FR.Msg.toast(res.errorMsg); + } + }) + } + else{ + console.log("not android platform") + var url = "/edo/batch/download" + "?edocName=" + userName; + util.postJSON(url, { fileIds: fileIds, folders: folders }, function (res) { + console.log("批量下载返回结果:" + JSON.stringify(res)) + if (!res.errorCode) { + //window.open(res.data) + window.location=res.data; + } else { + FR.Msg.toast(res.errorMsg); + } + }) + } + + }, + + "fileManager":function (folderId, userName, callback) { + var url = "/edo/file/manager?" + "folderId=" + folderId + "&edocName=" + userName; + + util.get(url, {}, function (res) { + if (!res.errorCode) { + if ($.isFunction(callback)) { + callback(res); + } else { + window.open(res.data) + } + } else { + FR.Msg.toast(res.errorMsg); + } + + }); + } + }; + + + + + + + + console.log("FR.EDO init complted") + +} + +initHyJs(); + +var test = function () { + alert("aaaaa") +} diff --git a/lib/EDoc2Sdk516.jar b/lib/EDoc2Sdk516.jar new file mode 100644 index 0000000..3784de8 Binary files /dev/null and b/lib/EDoc2Sdk516.jar differ diff --git a/lib/Edoc2FileUpload.jar b/lib/Edoc2FileUpload.jar new file mode 100644 index 0000000..ec32d18 Binary files /dev/null and b/lib/Edoc2FileUpload.jar differ diff --git a/plugin.xml b/plugin.xml new file mode 100644 index 0000000..5cda395 --- /dev/null +++ b/plugin.xml @@ -0,0 +1,32 @@ + + + com.fr.plugin.edo.file.manager + + yes + 1.3 + 10.0 + 2018-07-31 + fr.open + + + [2021-08-18 v1.1]更新了提交的更新字段br/> + [2021-08-24 v1.2]修改了前端的js调用方式,支持传入用户和自定义默认用户,增加批量下载接口br/> + [2021-09-22 v1.3]增加了文件管理打开的直接单点接口br/> + ]]> + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/java/com/fr/plugin/EDOTest.java b/src/main/java/com/fr/plugin/EDOTest.java new file mode 100644 index 0000000..6e04f32 --- /dev/null +++ b/src/main/java/com/fr/plugin/EDOTest.java @@ -0,0 +1,174 @@ +package com.fr.plugin; + +import EDoc2.IAppService.IDocAppService; +import EDoc2.IAppService.IOrgAppService; +import EDoc2.IAppService.Model.FileListAndFolderListDto; +import EDoc2.IAppService.Model.ReturnValueResult; +import EDoc2.IAppService.Model.UserLoginIntegrationByUserLoginNameDto; +import com.alibaba.fastjson.JSONObject; +import com.edoc2.model.ResultBean; +import com.edoc2.model.upload.UploadFileInfo; +import com.edoc2.model.upload.UploadFileResult; +import com.edoc2.model.upload.uploadenum.CalcMD5; +import com.edoc2.model.upload.uploadenum.UpgradeStrategy; +import com.edoc2.proxy.FacadeProxy; +import com.edoc2.sdkconfig.SdkBaseInfo; +import com.edoc2.utils.FileUtils; +import com.edoc2.utils.HttpUtils; +import com.edoc2.utils.UploaderUtils; +import com.fr.stable.StringUtils; + +import java.io.File; +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +/** + * @author xx + * @version 10.0 + * @date 2021/6/28 + */ +public class EDOTest { + private static int DEMO_FOLDER_ID = 35679; + private static String DEMO_USERNAME = "xx"; + private static String DEMO_KEY = "xxx"; + + public static void main(String[] args) { + SdkBaseInfo.baseUrl = "http://xxx:33333"; + IOrgAppService iOrgAppService = FacadeProxy.newProxyInstance(IOrgAppService.class); + UserLoginIntegrationByUserLoginNameDto params = new UserLoginIntegrationByUserLoginNameDto(); + params.setLoginName(DEMO_USERNAME); + params.setIntegrationKey(DEMO_KEY); + params.setIPAddress("192.168.2.23"); + ReturnValueResult result = iOrgAppService.UserLoginIntegrationByUserLoginName(params); + String token = result.getData(); + System.out.println("token:" + token); + // ResultBean resultBean = uploadFile(token, "D:\\test.xlsx"); + // System.out.println(resultBean); + // fileDownload(380050 ,390380 , token); + // ReturnValueResult returnValueResult = removeFile(token, 379642); + //System.out.println(returnValueResult); + String[] fileIds = {"380050", "380066"}; + String[] folderIds = {}; + createBatchDownloadUrl(fileIds, folderIds, token); + } + + public static ResultBean uploadFile(String token, String filePath) { + File file = null; + FileInputStream fileInputStream = null; + try { + file = new File(filePath); + fileInputStream = new FileInputStream(file); + } catch (FileNotFoundException e) { + e.printStackTrace(); + return new ResultBean(); + } + //文件类型 + String mimeType = null; + try { + mimeType = FileUtils.getMimeType(file.getPath()); + } catch (IOException e) { + e.printStackTrace(); + return new ResultBean(); + } + UploadFileInfo uploadFileInfo = new UploadFileInfo(); + uploadFileInfo.setName(file.getName()); + uploadFileInfo.setType(mimeType); + // 获取文件最后一次更新时间 + Date lastModifiedDate = FileUtils.getFileLastModifiedDate(file); + uploadFileInfo.setLastModifiedDate(lastModifiedDate); + //uploadFileInfo.setFileId(44);// 更新的时候需要传文件id ,策略需要设置 MajorUpgrade OverlayLatestVersion +/* UploadFileResult uploadFileResult = UploaderUtils.uploadFileByInputStraemAsync(token, DEMO_FOLDER_ID, UpgradeStrategy.MinorUpgrade, + CalcMD5.Before.getValue(), "test.xlsx", fileInputStream, uploadFileInfo);*/ + ResultBean resultBean = null; + try { + resultBean = UploaderUtils.uploadFileByStream(token, DEMO_FOLDER_ID, UpgradeStrategy.MinorUpgrade, + CalcMD5.Before.getValue(), "", fileInputStream, uploadFileInfo); + } catch (IOException e) { + e.printStackTrace(); + return new ResultBean(); + } + return resultBean; + } + + public static String createBatchDownloadUrl(String[] fileList, String[] folderList, String token) { + StringBuilder stringBuilder = new StringBuilder(SdkBaseInfo.baseUrl); + stringBuilder.append("/DownLoad/DownLoadCheck?fileIds=").append(StringUtils.join(",", fileList)); + stringBuilder.append("&folderIds=").append(StringUtils.join(",", folderList)); + stringBuilder.append("&token="); + stringBuilder.append(token); + //1.2请求 + String result = null; + try { + result = HttpUtils.doGet(stringBuilder.toString(), null, null); + } catch (Exception e) { + e.printStackTrace(); + } + //1.3获取region hash + JSONObject json = JSONObject.parseObject(result); + String regionHash = (String) json.get("RegionHash"); + System.out.println(json); + + //2.拼装下载URL + StringBuilder url = new StringBuilder(SdkBaseInfo.baseUrl); + url.append("/downLoad/index?regionHash="); + url.append(regionHash); + url.append("&async=true"); + url.append("&token="); + url.append(token); + + System.out.println(url); + return url.toString(); + } + + public static void fileDownload(int fileId, int verId, String token) { + //1.1组装下载请求URL + StringBuilder stringBuilder = new StringBuilder(SdkBaseInfo.baseUrl); + stringBuilder.append("/DownLoad/DownLoadCheck?fileIds="); + stringBuilder.append(fileId); + stringBuilder.append("&ver_id="); + stringBuilder.append(verId); + stringBuilder.append("&token="); + stringBuilder.append(token); + //1.2请求 + String result = null; + try { + result = HttpUtils.doGet(stringBuilder.toString(), null, null); + } catch (Exception e) { + e.printStackTrace(); + } + //1.3获取region hash + JSONObject json = JSONObject.parseObject(result); + String regionHash = (String) json.get("RegionHash"); + System.out.println(json); + + //2.拼装下载URL + StringBuilder url = new StringBuilder(SdkBaseInfo.baseUrl); + url.append("/downLoad/index?regionHash="); + url.append(regionHash); + url.append("&async=true"); + url.append("&token="); + url.append(token); + + System.out.println(url); + + } + + public static ReturnValueResult removeFile(String token, int fileId) { + IDocAppService service = FacadeProxy.newProxyInstance(IDocAppService.class); + FileListAndFolderListDto fileListAndFolderListDto = new FileListAndFolderListDto(); + ArrayList fileList = new ArrayList(); + fileList.add(fileId); + fileListAndFolderListDto.setFileIdList(fileList); + fileListAndFolderListDto.setFilePathList(new ArrayList()); + fileListAndFolderListDto.setFolderIdList(new ArrayList()); + fileListAndFolderListDto.setFolderPathList(new ArrayList()); + fileListAndFolderListDto.setToken(token); + return service.RemoveFolderListAndFileList(fileListAndFolderListDto); + + } + +} diff --git a/src/main/java/com/fr/plugin/PluginContants.java b/src/main/java/com/fr/plugin/PluginContants.java new file mode 100644 index 0000000..274e380 --- /dev/null +++ b/src/main/java/com/fr/plugin/PluginContants.java @@ -0,0 +1,29 @@ +package com.fr.plugin; + +import com.edoc2.sdkconfig.SdkBaseInfo; +import com.fr.io.utils.ResourceIOUtils; +import com.fr.log.FineLoggerFactory; + +import java.io.IOException; +import java.io.InputStream; +import java.util.Properties; + +/** + * @author xxx + * @version 10.0 + * @date 2021/8/24 + */ +public class PluginContants { + private static Properties pro = new Properties(); + + static { + InputStream inputStream = ResourceIOUtils.read("/resources/edoConfig.properties"); + pro = new Properties(); + try { + pro.load(inputStream); + } catch (IOException e) { + FineLoggerFactory.getLogger().error(e.getMessage()); + } + } + +} diff --git a/src/main/java/com/fr/plugin/edo/HyEdoPluginLifecycleMonitor.java b/src/main/java/com/fr/plugin/edo/HyEdoPluginLifecycleMonitor.java new file mode 100644 index 0000000..f05f39f --- /dev/null +++ b/src/main/java/com/fr/plugin/edo/HyEdoPluginLifecycleMonitor.java @@ -0,0 +1,72 @@ +package com.fr.plugin.edo; + +import com.fr.plugin.edo.controller.EdoController; +import com.fr.plugin.edo.tabDataSource.model.SearchResult; +import com.fr.plugin.edo.util.HttpUtil; +import com.fr.intelli.record.Focus; +import com.fr.intelli.record.Original; +import com.fr.json.JSONObject; +import com.fr.log.FineLoggerFactory; +import com.fr.plugin.context.PluginContext; +import com.fr.plugin.edo.submit.EDOFileUtils; +import com.fr.plugin.observer.inner.AbstractPluginLifecycleMonitor; +import com.fr.plugin.transform.FunctionRecorder; +import com.fr.record.analyzer.EnableMetrics; +import com.fr.stable.StringUtils; +import com.fr.third.alibaba.druid.support.json.JSONUtils; +import com.fr.workspace.WorkContext; + +import java.io.File; +import java.util.*; + +@EnableMetrics +@FunctionRecorder +public class HyEdoPluginLifecycleMonitor extends AbstractPluginLifecycleMonitor { + @Override + @Focus(id = "com.fr.plugin.edo.file.manager", text = "filemanager", source = Original.PLUGIN) + public void afterRun(PluginContext pluginContext) { + FineLoggerFactory.getLogger().info("插件启动:"); + String envPath = WorkContext.getCurrent().getPath(); + FineLoggerFactory.getLogger().info("envPath:"+envPath); + String webReport = (new File(envPath)).getParent(); + File downfiles = new File(webReport+File.separator+"downfiles"); + if(!downfiles.exists()){ + downfiles.mkdir(); + } + EdoController.downFileDir = downfiles; + FineLoggerFactory.getLogger().info("downfiles:"+downfiles.getPath()); + FineLoggerFactory.getLogger().info("hongyi start..............."); + + Calendar startDate = Calendar.getInstance(); + //定时每天23点半执行一次 + startDate.set(startDate.get(Calendar.YEAR), startDate.get(Calendar.MONTH), startDate.get(Calendar.DATE), 23, 30, 0); + // 1小时的毫秒设定 + long timeInterval = 24* 60 * 60 * 1000; + Timer t = new Timer(); + t.schedule(new TimerTask() { + public void run() { + // 定时器主要执行的代码块 + FineLoggerFactory.getLogger().info("定时器主要执行的代码! 删除下载文件"); + try { + File files[] = downfiles.listFiles(); + for (File file : files) { + FineLoggerFactory.getLogger().info(" 删除下载文件:"+file.getAbsolutePath()); + file.delete(); + } + FineLoggerFactory.getLogger().info(" 删除下载文件成功"); + } catch (Exception e) { + e.printStackTrace(); + FineLoggerFactory.getLogger().error(e.toString()); + } + } + // 设定的定时器在23:30分开始执行,每隔 24小时执行一次. + }, startDate.getTime(), timeInterval ); //timeInterval 是一天的毫秒数,也是执行间隔 + + + } + + @Override + public void beforeStop(PluginContext pluginContext) { + FineLoggerFactory.getLogger().info("插件停止"); + } +} diff --git a/src/main/java/com/fr/plugin/edo/controller/EdoController.java b/src/main/java/com/fr/plugin/edo/controller/EdoController.java new file mode 100644 index 0000000..867e233 --- /dev/null +++ b/src/main/java/com/fr/plugin/edo/controller/EdoController.java @@ -0,0 +1,490 @@ +package com.fr.plugin.edo.controller; +import EDoc2.IAppService.Model.ReturnValueResult; +import com.alibaba.fastjson.JSONObject; +import com.edoc2.sdkconfig.SdkBaseInfo; +import com.edoc2.utils.HttpUtils; +import com.fr.decision.authority.data.User; +import com.fr.decision.webservice.Response; +import com.fr.decision.webservice.annotation.LoginStatusChecker; +import com.fr.decision.webservice.utils.DecisionStatusService; +import com.fr.decision.webservice.v10.login.LoginService; +import com.fr.decision.webservice.v10.user.UserService; +import com.fr.log.FineLoggerFactory; +import com.fr.plugin.edo.controller.params.BatchDownParam; +import com.fr.plugin.edo.controller.params.DownLoadParam; +import com.fr.plugin.edo.submit.EDOFileUtils; +import com.fr.record.analyzer.EnableMetrics; +import com.fr.stable.StringUtils; +import com.fr.store.StateHubManager; +import com.fr.third.springframework.stereotype.Controller; +import com.fr.third.springframework.web.bind.annotation.*; +import com.fr.web.utils.WebUtils; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.net.HttpURLConnection; +import java.net.MalformedURLException; +import java.net.URL; +import java.net.URLDecoder; +import java.text.SimpleDateFormat; +import java.util.*; + +/** + * @author xx + * @version 10.0 + * @date 2021/6/29 + */ +@EnableMetrics +@Controller +@LoginStatusChecker( + required = false +) +@RequestMapping("edo") +public class EdoController { + + + public static File downFileDir; + + private String getCurrentUserName(HttpServletRequest req) { + String edocName = WebUtils.getHTTPRequestParameter(req, "edocName"); + return StringUtils.isBlank(edocName) ? EDOFileUtils.DEFAULT_NAME : edocName; + } + + + public String getCurrentLoginUser(HttpServletRequest req) { + //HomePageResource + return LoginService.getInstance().getCurrentUserNameFromRequestCookie(req); + + } + + @RequestMapping( + value = {"/token"}, + method = {RequestMethod.GET} + ) + @ResponseBody + public Response createToken(HttpServletRequest req, HttpServletResponse res) { + String userName = getCurrentUserName(req); + return Response.ok(EDOFileUtils.createToken(userName, req)); + } + + //三个参数:fileId,verId,edocName + @RequestMapping( + value = {"/download"}, + method = {RequestMethod.GET} + ) + @ResponseBody + public Response getDownLoadURL(HttpServletRequest req, HttpServletResponse res) throws IOException { + FineLoggerFactory.getLogger().debug("getDownLoadURL.................."); + int fileId = WebUtils.getHTTPRequestIntParameter(req, "fileId"); + int verId = WebUtils.getHTTPRequestIntParameter(req, "verId"); + String userName = EDOFileUtils.createToken(getCurrentUserName(req), req); + FineLoggerFactory.getLogger().debug("获取下载参数:fileId"+fileId+",verId:"+verId+",userName:"+userName); + String url = EDOFileUtils.createDownFileURL(fileId, verId, userName); + FineLoggerFactory.getLogger().debug("获取下载url:"+url); + // downFile(url); + return Response.ok(url); + } + + + @RequestMapping( + value = {"/getDownloadUrlFr"}, + method = {RequestMethod.GET} + ) + @ResponseBody + public Response getDownLoadURLFr(HttpServletRequest req, HttpServletResponse res) throws Exception { + FineLoggerFactory.getLogger().debug("android getDownloadUrlFr .................."); + int fileId = WebUtils.getHTTPRequestIntParameter(req, "fileId"); + int verId = WebUtils.getHTTPRequestIntParameter(req, "verId"); + String userName = EDOFileUtils.createToken(getCurrentUserName(req), req); + FineLoggerFactory.getLogger().debug("获取下载参数:fileId"+fileId+",verId:"+verId+",userName:"+userName); + String url = EDOFileUtils.createDownFileURL(fileId, verId, userName); + FineLoggerFactory.getLogger().debug("获取下载url:"+url); + String newUrl = downFile(url); + FineLoggerFactory.getLogger().debug("获取fr下载url:"+newUrl); + return Response.ok(newUrl); + } + + @RequestMapping( + value = {"/downloadFileFr"}, + method = {RequestMethod.GET} + ) + @ResponseBody + public void downloadFileFr(HttpServletRequest req, HttpServletResponse res) throws Exception { + String downFileName = WebUtils.getHTTPRequestParameter(req,"downFileName"); + FineLoggerFactory.getLogger().debug("android downloadFileFr fileName:"+downFileName); + String downFilePath = downFileDir.getPath()+File.separator+downFileName; + FineLoggerFactory.getLogger().debug("downloadFileFr filePath:"+downFilePath); + File file = new File(downFilePath); + FineLoggerFactory.getLogger().debug("downloadFileFr file.exists():"+file.exists()); + if(file.exists()){ + String showName = DecisionStatusService.loginStatusService().get(downFileName); + // DecisionStatusService.loginStatusService().delete(downFileName); + FineLoggerFactory.getLogger().debug("showName:"+showName); + res.reset(); // 响应重置 + res.setHeader("Content-Disposition", "attachment;filename=\""+ showName + "\""); + res.addHeader("Content-Length", ""+file.length()); + res.setContentType("application/octet-stream;charset=UTF-8"); + OutputStream out = res.getOutputStream(); + FileInputStream input = new FileInputStream(file); + int len = 0; + byte[] buffer = new byte[1024*8]; + while ((len = input.read(buffer)) != -1) { + out.write(buffer,0,len); + } + input.close(); + res.flushBuffer(); + } + } + + private String downFile(String urlPath) throws Exception { + URL url = new URL(urlPath); + HttpURLConnection http = (HttpURLConnection)url.openConnection(); + http.setConnectTimeout(3000); + // 设置 User-Agent 避免被拦截 + http.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)"); + String contentType = http.getContentType(); + + String fieldValue = http.getHeaderField("Content-Disposition"); + FineLoggerFactory.getLogger().debug("获取fr下载fieldValue:"+fieldValue); + String filename = fieldValue.substring(fieldValue.indexOf("filename=\"") + 10, fieldValue.length() - 2); + //filename = URLDecoder.decode(filename,"utf-8"); + int indexPos = filename.indexOf("."); + String extension = filename.substring(indexPos,filename.length()); + String fileNameUuid = UUID.randomUUID().toString(); + fileNameUuid = fileNameUuid.replaceAll("-",""); + String oldFileName = filename; + filename = fileNameUuid+extension; + DecisionStatusService.loginStatusService().put(filename,oldFileName); + FineLoggerFactory.getLogger().debug("获取fr下载filename:"+filename); + + InputStream inputStream = http.getInputStream(); + byte[] buff = new byte[1024*10]; + File file = new File(downFileDir, filename); + FineLoggerFactory.getLogger().debug("file path:"+file.getAbsolutePath()); + if(file.exists()){ + FineLoggerFactory.getLogger().debug("file.delete.................."); + file.delete(); + } + FineLoggerFactory.getLogger().debug("file.exists():"+file.exists()); + if(!file.exists()){ + OutputStream out = new FileOutputStream(file); + int len ; + while((len = inputStream.read(buff)) != -1) { + out.write(buff, 0, len); + out.flush(); + } + // 关闭资源 + out.close(); + inputStream.close(); + FineLoggerFactory.getLogger().debug("文件写入完成"); + } + http.disconnect(); + // String newUrl = "webroot"+File.separator+"decision"+File.separator+"downfiles"+File.separator+filename; + String newUrl = filename ; + FineLoggerFactory.getLogger().debug("newUrl:"+newUrl); + FineLoggerFactory.getLogger().debug("file.exists():"+file.exists()); + return newUrl; + } + + + private String downFile1(String urlPath) throws Exception { + URL url = new URL(urlPath); + HttpURLConnection http = (HttpURLConnection)url.openConnection(); + http.setConnectTimeout(3000); + // 设置 User-Agent 避免被拦截 + http.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)"); + String contentType = http.getContentType(); + + String fieldValue = http.getHeaderField("Content-Disposition"); + FineLoggerFactory.getLogger().debug("获取fr下载fieldValue:"+fieldValue); + String filename = fieldValue.substring(fieldValue.indexOf("filename=\"") + 10, fieldValue.length()); + //filename = URLDecoder.decode(filename,"utf-8"); + int indexPos = filename.indexOf("."); + String extension = filename.substring(indexPos,filename.length()); + String fileNameUuid = UUID.randomUUID().toString(); + fileNameUuid = fileNameUuid.replaceAll("-",""); + String oldFileName = filename; + filename = fileNameUuid+extension; + DecisionStatusService.loginStatusService().put(filename,oldFileName); + FineLoggerFactory.getLogger().debug("获取fr下载filename:"+filename); + + InputStream inputStream = http.getInputStream(); + byte[] buff = new byte[1024*10]; + File file = new File(downFileDir, filename); + FineLoggerFactory.getLogger().debug("file path:"+file.getAbsolutePath()); + if(file.exists()){ + FineLoggerFactory.getLogger().debug("file.delete.................."); + file.delete(); + } + FineLoggerFactory.getLogger().debug("file.exists():"+file.exists()); + if(!file.exists()){ + OutputStream out = new FileOutputStream(file); + int len ; + while((len = inputStream.read(buff)) != -1) { + out.write(buff, 0, len); + out.flush(); + } + // 关闭资源 + out.close(); + inputStream.close(); + FineLoggerFactory.getLogger().debug("文件写入完成"); + } + http.disconnect(); + // String newUrl = "webroot"+File.separator+"decision"+File.separator+"downfiles"+File.separator+filename; + String newUrl = filename ; + FineLoggerFactory.getLogger().debug("newUrl:"+newUrl); + FineLoggerFactory.getLogger().debug("file.exists():"+file.exists()); + return newUrl; + } + + + //两个参数edocName,fileIds 多个文件id + @RequestMapping( + value = {"/batch/download"}, + method = {RequestMethod.POST} + ) + @ResponseBody + public Response getBatchDownloadURL(HttpServletRequest req, HttpServletResponse res, @RequestBody BatchDownParam param) { + String token = EDOFileUtils.createToken(getCurrentUserName(req), req); + String result = ""; + try { + String url = EDOFileUtils.batchDownload(param.getFileIds(),param.getFolders(), token); + FineLoggerFactory.getLogger().info("获取批量下载url:"+url); + result = HttpUtils.doGet(url, null, null); + FineLoggerFactory.getLogger().info("获取批量下载url结果:"+result); + + JSONObject json = JSONObject.parseObject(result); + String regionHash = (String) json.get("RegionHash"); + // System.out.println(json); + + //2.拼装下载URL + StringBuilder downUrl = new StringBuilder(SdkBaseInfo.baseUrl); + downUrl.append("/downLoad/index?regionHash="); + downUrl.append(regionHash); + // downUrl.append("&async=true"); + // downUrl.append("&token="); + // downUrl.append(token); + + JSONObject jsonParam = new JSONObject(); + jsonParam.put("async",true); + jsonParam.put("token",token); + String fileString = org.apache.commons.lang.StringUtils.join(param.getFileIds().toArray(), ','); + jsonParam.put("fileIds",fileString.split(",")); + + // downUrl.append("&filesId="+fileString); + fileString = org.apache.commons.lang.StringUtils.join(param.getFolders().toArray(), ','); + jsonParam.put("folderIds",fileString.split(",")); + // downUrl.append("&folderIds="+fileString); + + FineLoggerFactory.getLogger().info("第2步 获取批量下载url:"+downUrl.toString()); + + result = HttpUtils.doPostObjectParam(downUrl.toString(),jsonParam,null); + FineLoggerFactory.getLogger().info("第2步 获取批量下载url结果:"+result); + json = JSONObject.parseObject(result); + String pTaskId = (String) json.get("pTaskId"); + String zipUrl = SdkBaseInfo.baseUrl+"/WebCore"; + System.out.println("第3步 压缩url:"+zipUrl); + jsonParam = new JSONObject(); + jsonParam.put("module","WebClient"); + jsonParam.put("fun","GetZipProgress"); + jsonParam.put("pTaskId",pTaskId); + jsonParam.put("token",token); + jsonParam.put("r",Math.random()*1000); + + String status = "Ziping"; + String zipName = ""; + while(status.equals("Complete") == false){ + result = HttpUtils.doPostObjectParam(zipUrl.toString(),jsonParam,null); + FineLoggerFactory.getLogger().info("第3步 压缩结果:"+result); + json = JSONObject.parseObject(result); + status = (String) json.get("status"); + zipName = (String) json.get("zipName"); + String errorMsg = (String) json.get("errorMsg"); + if(StringUtils.isNotEmpty(errorMsg)){ + return Response.error("10000","压缩失败:"+errorMsg); + } + } + + String lastdownUrl = SdkBaseInfo.baseUrl+"/downLoad/GetFile?fileName="+zipName; + FineLoggerFactory.getLogger().info("最后的下载url:"+lastdownUrl); + + + return Response.ok(lastdownUrl); + } catch (Exception e) { + return Response.error("404", e.getMessage()); + } + + } + + + @RequestMapping( + value = {"/batch/downloadFr"}, + method = {RequestMethod.POST} + ) + @ResponseBody + public Response getBatchDownloadFrURL(HttpServletRequest req, HttpServletResponse res, @RequestBody BatchDownParam param) { + String token = EDOFileUtils.createToken(getCurrentUserName(req), req); + String result = ""; + try { + String url = EDOFileUtils.batchDownload(param.getFileIds(),param.getFolders(), token); + FineLoggerFactory.getLogger().info("android 获取批量下载url:"+url); + result = HttpUtils.doGet(url, null, null); + FineLoggerFactory.getLogger().info("android 获取批量下载url结果:"+result); + + JSONObject json = JSONObject.parseObject(result); + String regionHash = (String) json.get("RegionHash"); + // System.out.println(json); + + //2.拼装下载URL + StringBuilder downUrl = new StringBuilder(SdkBaseInfo.baseUrl); + downUrl.append("/downLoad/index?regionHash="); + downUrl.append(regionHash); + // downUrl.append("&async=true"); + // downUrl.append("&token="); + // downUrl.append(token); + + JSONObject jsonParam = new JSONObject(); + jsonParam.put("async",true); + jsonParam.put("token",token); + String fileString = org.apache.commons.lang.StringUtils.join(param.getFileIds().toArray(), ','); + jsonParam.put("fileIds",fileString.split(",")); + + // downUrl.append("&filesId="+fileString); + fileString = org.apache.commons.lang.StringUtils.join(param.getFolders().toArray(), ','); + jsonParam.put("folderIds",fileString.split(",")); + // downUrl.append("&folderIds="+fileString); + + FineLoggerFactory.getLogger().info("第2步 获取批量下载url:"+downUrl.toString()); + + result = HttpUtils.doPostObjectParam(downUrl.toString(),jsonParam,null); + FineLoggerFactory.getLogger().info("第2步 获取批量下载url结果:"+result); + json = JSONObject.parseObject(result); + String pTaskId = (String) json.get("pTaskId"); + String zipUrl = SdkBaseInfo.baseUrl+"/WebCore"; + System.out.println("第3步 压缩url:"+zipUrl); + jsonParam = new JSONObject(); + jsonParam.put("module","WebClient"); + jsonParam.put("fun","GetZipProgress"); + jsonParam.put("pTaskId",pTaskId); + jsonParam.put("token",token); + jsonParam.put("r",Math.random()*1000); + + String status = "Ziping"; + String zipName = ""; + while(status.equals("Complete") == false){ + result = HttpUtils.doPostObjectParam(zipUrl.toString(),jsonParam,null); + FineLoggerFactory.getLogger().info("第3步 压缩结果:"+result); + json = JSONObject.parseObject(result); + status = (String) json.get("status"); + zipName = (String) json.get("zipName"); + String errorMsg = (String) json.get("errorMsg"); + if(StringUtils.isNotEmpty(errorMsg)){ + return Response.error("10000","压缩失败:"+errorMsg); + } + } + + String lastdownUrl = SdkBaseInfo.baseUrl+"/downLoad/GetFile?fileName="+zipName; + FineLoggerFactory.getLogger().info("android 最后的下载url:"+lastdownUrl); + lastdownUrl = downFile1(lastdownUrl); + FineLoggerFactory.getLogger().info("android 最后的下载 fr url:"+lastdownUrl); + return Response.ok(lastdownUrl); + } catch (Exception e) { + return Response.error("404", e.getMessage()); + } + + } + + + @RequestMapping( + value = {"/priview"}, + method = {RequestMethod.GET} + ) + @ResponseBody + public Response getPriviewURL(HttpServletRequest req, HttpServletResponse res) throws Exception { + FineLoggerFactory.getLogger().info("yulan.................."); + FineLoggerFactory.getLogger().info("preview coming=================================================================="); + int fileId = WebUtils.getHTTPRequestIntParameter(req, "fileId"); + String userName = getCurrentUserName(req); + String ip = EDOFileUtils.getIpAddr(req); + String loginUserName = getCurrentLoginUser(req); + DecisionStatusService.loginStatusService().put(loginUserName,ip); + FineLoggerFactory.getLogger().info("======================== 预览时,存储用户名与IP:userName="+loginUserName+",ip="+ip); + String token = EDOFileUtils.createToken(userName, req); + StringBuilder url = new StringBuilder(SdkBaseInfo.baseUrl); + url.append("/jump.html?token="); + url.append(token).append("&returnUrl=/preview.html?userName="+loginUserName+"&fileid=").append(fileId); + // String url = EDOFileUtils.createDownFileURL(fileId, verId, EDOFileUtils.createToken(getCurrentUserName(req), req)); + String result = url.toString(); + FineLoggerFactory.getLogger().info("预览地址:"+result); + return Response.ok(result); + } + + @RequestMapping( + value = {"/remove"}, + method = {RequestMethod.POST} + ) + @ResponseBody + public Response deleteFiles(HttpServletRequest req, HttpServletResponse res, @RequestBody ArrayList fileIds) { + if (fileIds == null || fileIds.size() == 0) { + return Response.success(); + } + ReturnValueResult result = EDOFileUtils.deleteFile(EDOFileUtils.createToken(getCurrentUserName(req), req), fileIds, new ArrayList()); + if (result != null) { + if (result.getResult() == 0) { + return Response.success(); + } else { + return Response.error(String.valueOf(result.getResult()), result.getMessage()); + } + } + return Response.error("500", "位置错误"); + } +// http://120.27.145.41:8080/webroot/decision/edo/getWatermarkContent + + @RequestMapping( + value = {"/getWatermarkContent"}, + method = {RequestMethod.GET} + ) + @ResponseBody + // public Response getWatermarkContent(HttpServletRequest req, HttpServletResponse res,@RequestParam String userName) throws Exception { + public String getWatermarkContent(HttpServletRequest req, HttpServletResponse res) throws Exception { + + String userName = req.getParameter("username"); + if(userName == null){ + userName = "default"; + } + + + FineLoggerFactory.getLogger().info("=============================== 获取水印内容 userName:"+userName); + String ip = DecisionStatusService.loginStatusService().get(userName); + if(StringUtils.isEmpty(ip)){ + ip = EDOFileUtils.TOKEN_IP; + } + Date date = new Date(); + // 定义格式化时间输出格式 + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + String currentSimpleDate= simpleDateFormat.format(date); + String result = userName +" "+ ip + " "+currentSimpleDate; + return result; + } + + + @RequestMapping( + value = {"/file/manager"}, + method = {RequestMethod.GET} + ) + @ResponseBody + public Response getFileManagerURL(HttpServletRequest req, HttpServletResponse res) throws Exception { + int folderId = WebUtils.getHTTPRequestIntParameter(req, "folderId"); + String currentUserName = getCurrentUserName(req); + String token = EDOFileUtils.createToken(currentUserName, req); + if (StringUtils.isBlank(token)) { + return Response.error("500", "获取token失败"); + } + StringBuilder url = new StringBuilder(SdkBaseInfo.baseUrl); + url.append("/jump.html?token=").append(token); + url.append("&returnUrl=/index.html#doc/enterprise/").append(folderId); + return Response.ok(url.toString()); + } + +} diff --git a/src/main/java/com/fr/plugin/edo/controller/EdoControllerProvider.java b/src/main/java/com/fr/plugin/edo/controller/EdoControllerProvider.java new file mode 100644 index 0000000..c30a0d2 --- /dev/null +++ b/src/main/java/com/fr/plugin/edo/controller/EdoControllerProvider.java @@ -0,0 +1,14 @@ +package com.fr.plugin.edo.controller; + +import com.fr.decision.fun.impl.AbstractControllerRegisterProvider; + +public class EdoControllerProvider extends AbstractControllerRegisterProvider { + + @Override + public Class[] getControllers() { + return new Class[]{ + EdoController.class + }; + } + +} diff --git a/src/main/java/com/fr/plugin/edo/controller/params/BatchDownParam.java b/src/main/java/com/fr/plugin/edo/controller/params/BatchDownParam.java new file mode 100644 index 0000000..254ebf3 --- /dev/null +++ b/src/main/java/com/fr/plugin/edo/controller/params/BatchDownParam.java @@ -0,0 +1,24 @@ +package com.fr.plugin.edo.controller.params; + +import java.util.ArrayList; + +public class BatchDownParam { + private ArrayList fileIds; + private ArrayList folders; + + public ArrayList getFileIds() { + return fileIds; + } + + public void setFileIds(ArrayList fileIds) { + this.fileIds = fileIds; + } + + public ArrayList getFolders() { + return folders; + } + + public void setFolders(ArrayList folders) { + this.folders = folders; + } +} diff --git a/src/main/java/com/fr/plugin/edo/controller/params/DownLoadParam.java b/src/main/java/com/fr/plugin/edo/controller/params/DownLoadParam.java new file mode 100644 index 0000000..847fa05 --- /dev/null +++ b/src/main/java/com/fr/plugin/edo/controller/params/DownLoadParam.java @@ -0,0 +1,17 @@ +package com.fr.plugin.edo.controller.params; + +public class DownLoadParam { + + private String downFileName; + + + public String getDownFileName() { + return downFileName; + } + + public void setDownFileName(String downFileName) { + this.downFileName = downFileName; + } + + +} diff --git a/src/main/java/com/fr/plugin/edo/submit/EDOFileSubmit.java b/src/main/java/com/fr/plugin/edo/submit/EDOFileSubmit.java new file mode 100644 index 0000000..105ae70 --- /dev/null +++ b/src/main/java/com/fr/plugin/edo/submit/EDOFileSubmit.java @@ -0,0 +1,168 @@ +package com.fr.plugin.edo.submit; + +import com.edoc2.model.ResultBean; +import com.edoc2.model.upload.CheckRegionData; +import com.edoc2.model.upload.UploadFileResult; +import com.fr.cache.Attachment; +import com.fr.data.JobValue; +import com.fr.data.TotalSubmitJob; +import com.fr.general.ComparatorUtils; +import com.fr.general.FArray; +import com.fr.general.GeneralUtils; +import com.fr.io.TemplateWorkBookIO; +import com.fr.log.FineLoggerFactory; +import com.fr.main.TemplateWorkBook; +import com.fr.main.workbook.WriteWorkBook; +import com.fr.report.write.SubmitHelper; +import com.fr.script.Calculator; +import com.fr.stable.StringUtils; +import com.fr.stable.WriteActor; +import com.fr.web.core.ReportWebUtils; + +import java.io.File; +import java.io.FileInputStream; +import java.util.HashMap; +import java.util.Map; +import com.fr.log.FineLoggerFactory; +import com.edoc2.entity.FileUploadConfig; +import com.edoc2.entity.FileUploadCreateInfoInput; +import com.edoc2.entity.UpdateStrategy; +import com.edoc2.entity.ResultFile; +import com.edoc2.UploadFileServices; +import com.fr.workspace.WorkContext; + +public class EDOFileSubmit extends TotalSubmitJob { + @Override + protected void doTotalJob(Data data, Calculator calculator) throws Exception { + + data.getColumnCount(); + for (int i = 0; i < data.getColumnCount(); i++) { + System.out.println(data.getColumnName(i)); + } + for (int i = 0; i < data.getRowCount(); i++) { + String submitId = ""; + String updateCpt = ""; + Attachment attachment = null; + int fileId = -1; + int verId = -1; + String userName = ""; + String fileName = ""; + int folderId = -1; + for (int j = 0; j < data.getColumnCount(); j++) { + JobValue jobValue = (JobValue)data.getValueAt(i, j); + String colName = data.getColumnName(j); + if (ComparatorUtils.equals(colName, "submitId")) { + submitId = GeneralUtils.objectToString(jobValue.getValue()); + } + if (ComparatorUtils.equals(colName, "updateCpt")) { + updateCpt = GeneralUtils.objectToString(jobValue.getValue()); + } + if (ComparatorUtils.equals(colName, "fileId")) { + String s = GeneralUtils.objectToString(jobValue.getValue()); + if (StringUtils.isNotBlank(s)) { + fileId = Integer.valueOf(s).intValue(); + } + } + if (ComparatorUtils.equals(colName, "folderId")) { + String s = GeneralUtils.objectToString(jobValue.getValue()); + if (StringUtils.isNotBlank(s)) { + folderId = Integer.valueOf(s).intValue(); + } + } + if (ComparatorUtils.equals(colName, "verId")) { + String s = GeneralUtils.objectToString(jobValue.getValue()); + if (StringUtils.isNotBlank(s)) { + verId = Integer.valueOf(s).intValue(); + } + } + if (ComparatorUtils.equals("fileName", colName)) { + fileName = GeneralUtils.objectToString(jobValue.getValue()); + } + if (ComparatorUtils.equals("userName", colName)) { + userName = GeneralUtils.objectToString(jobValue.getValue()); + } + if (ComparatorUtils.equals(data.getColumnName(j), "file")) { + Object value = jobValue.getValue(); + if ((!(value instanceof FArray)) || (((FArray)value).length() <= 0)) + continue; + attachment = (Attachment)((FArray)value).elementAt(0); + + } + } + + String filePath = WorkContext.getCurrent().getPath()+ File.separator+attachment.getPath(); + FineLoggerFactory.getLogger().info("filePath:"+filePath); + FineLoggerFactory.getLogger().info("文件自定义提交参数:submitId="+submitId+",updateCpt="+updateCpt+",fileId="+fileId+",folderId="+folderId+",verId="+verId+",fileName="+fileName+",userName="+userName+",filepath:"+filePath); + + ResultFile resultBean = upload(attachment, folderId, fileId, fileName, userName,filePath); + // FineLoggerFactory.getLogger().info("上传文件的结果:code="+resultBean.getCode()+",content="+resultBean.getContent()+",isSuccess="+resultBean.isSuccess()); + if ((StringUtils.isNotBlank(submitId)) && (StringUtils.isNotBlank(updateCpt)) && (resultBean != null)) { + // int code = resultBean.getCode(); + // if (code == 1) { + // UploadFileResult result = (UploadFileResult)resultBean.getObj(); + // CheckRegionData fileInfo = result.getFileInfo(); + int newLileId = resultBean.getFileId(); + int fileVerId = resultBean.getFileVerId(); + + Map paramater = new HashMap(); + paramater.put("submitId", submitId); + paramater.put("userName", userName); + paramater.put("folderId", Integer.valueOf(folderId)); + paramater.put("fileId", Integer.valueOf(newLileId)); + paramater.put("verId", Integer.valueOf(fileVerId)); + paramater.put("fileName", fileName); + FineLoggerFactory.getLogger().info("入库参数:submitId="+submitId+",userName="+userName+",folderId="+folderId+",fileId="+newLileId+",verId="+fileVerId+",fileName="+fileName); + TemplateWorkBook baseTemplate = TemplateWorkBookIO.readTemplateWorkBook(updateCpt); + WriteWorkBook writeworkbook = (WriteWorkBook)baseTemplate.execute(paramater, new WriteActor()); + SubmitHelper.submit(writeworkbook, baseTemplate, ReportWebUtils.dealWithReportParameters(baseTemplate, paramater)); + FineLoggerFactory.getLogger().info("入库成功"); + // } else { + // throw new Exception(resultBean.getContent()); + // } + } + } + } + + protected ResultFile upload(Attachment attachment, int folderId, int fileId, String filename, String userName,String filePath) + { + if (attachment == null) { + return null; + } + if (StringUtils.isBlank(filename)); + filename = attachment.getFilename(); + FileInputStream inputStream = (FileInputStream)attachment.getInputStream(); + + String type = attachment.getType(); + + FileUploadConfig config = new FileUploadConfig(); + config.set_host("http://xxxx"); + config.set_token(EDOFileUtils.createToken(userName, null)); + UploadFileServices updaloadFile = new UploadFileServices(config); + FileUploadCreateInfoInput createInfoInput = new FileUploadCreateInfoInput(); + createInfoInput.set_fileName(filename); + createInfoInput.set_FolderId(folderId); + createInfoInput.set_FileRmark("测试文件"); + createInfoInput.set_size(attachment.getBytes().length); + createInfoInput.set_updateStrategy(UpdateStrategy.UpdateVersion); + + createInfoInput.setFilePath(filePath); + ResultFile result = null; + try { + result = updaloadFile.CreateFileInfo(createInfoInput); + if (result.getResult() == 0) { + FineLoggerFactory.getLogger().info("上传成功:fileId:"+result.getFileId()+"|verId:"+result.getFileVerId()); + } else { + FineLoggerFactory.getLogger().info("上传失败-错误编号:"+result.getResult()); + } + } catch (Exception e) { + e.printStackTrace(); + } + + //ResultBean resultBean = EDOFileUtils.uploadFile(EDOFileUtils.createToken(userName, null), inputStream, folderId, type, filename, fileId); + return result; + } + + + + +} diff --git a/src/main/java/com/fr/plugin/edo/submit/EDOFileUtils.java b/src/main/java/com/fr/plugin/edo/submit/EDOFileUtils.java new file mode 100644 index 0000000..348e2fe --- /dev/null +++ b/src/main/java/com/fr/plugin/edo/submit/EDOFileUtils.java @@ -0,0 +1,244 @@ +package com.fr.plugin.edo.submit; + +import EDoc2.IAppService.IDocAppService; +import EDoc2.IAppService.IOrgAppService; +import EDoc2.IAppService.Model.FileListAndFolderListDto; +import EDoc2.IAppService.Model.ReturnValueResult; +import EDoc2.IAppService.Model.UserLoginIntegrationByUserLoginNameDto; +import com.alibaba.fastjson.JSONObject; +import com.edoc2.model.ResultBean; +import com.edoc2.model.upload.UploadFileInfo; +import com.edoc2.model.upload.uploadenum.CalcMD5; +import com.edoc2.model.upload.uploadenum.UpgradeStrategy; +import com.edoc2.proxy.FacadeProxy; +import com.edoc2.sdkconfig.SdkBaseInfo; +import com.edoc2.utils.HttpUtils; +import com.edoc2.utils.UploaderUtils; +import com.fr.decision.webservice.Response; +import com.fr.io.utils.ResourceIOUtils; +import com.fr.log.FineLoggerFactory; +import com.fr.stable.StringUtils; +import com.fr.third.jodd.util.StringUtil; + +import javax.servlet.http.HttpServletRequest; +import java.io.FileInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.Properties; + +/** + * edo的文件处理工具类 + * + * @author xx + * @version 10.0 + * @date 2021/6/29 + */ +public class EDOFileUtils { + private static String EDO_KEY = ""; + + public static String DEFAULT_NAME = ""; + + public static String BATCH_URL = ""; + + public static String SEARCH_URL = ""; + + public static String TOKEN_IP = ""; + + static { + InputStream inputStream = ResourceIOUtils.read("/resources/edoConfig.properties"); + Properties pro = new Properties(); + try { + pro.load(inputStream); + SdkBaseInfo.baseUrl = pro.getProperty("EDOURL"); + EDO_KEY = pro.getProperty("EDOKEY"); + DEFAULT_NAME = pro.getProperty("DEFAULT_NAME"); + BATCH_URL = pro.getProperty("BATCH_URL"); + SEARCH_URL = pro.getProperty("SEARCH_URL"); + TOKEN_IP = pro.getProperty("TOKEN_IP"); + } catch (IOException e) { + e.printStackTrace(); + } + } + + /** + * 根据用户名获取token + * + * @param userName + * @param req + * @return + */ + public static String createToken(String userName, HttpServletRequest req) { + String ip = getIpAddr(req); + return createToken1(userName,ip); + } + + public static String createToken1(String userName, String ip) { + IOrgAppService iOrgAppService = FacadeProxy.newProxyInstance(IOrgAppService.class); + UserLoginIntegrationByUserLoginNameDto params = new UserLoginIntegrationByUserLoginNameDto(); + params.setLoginName(userName); + params.setIntegrationKey(EDO_KEY); + + params.setIPAddress(ip); + ReturnValueResult result = iOrgAppService.UserLoginIntegrationByUserLoginName(params); + if (result == null) { + FineLoggerFactory.getLogger().error("userName {} getToken failed", userName); + return StringUtils.EMPTY; + } + if (result.getResult() != 0) { + FineLoggerFactory.getLogger().error("userName {} getToken failed:{}", userName, result.getMessage()); + return StringUtils.EMPTY; + } + return result.getData(); + } + + public static String getIpAddr(HttpServletRequest request) { + if(request == null){ + return EDOFileUtils.TOKEN_IP; + } + String remoteAddr = request.getHeader("X-Forwarded-For"); + if (StringUtil.isBlank(remoteAddr)) { + remoteAddr = request.getHeader("Proxy-Client-IP"); + } + if (StringUtil.isBlank(remoteAddr)) { + remoteAddr = request.getHeader("WL-Proxy-Client-IP"); + } + return remoteAddr != null ? remoteAddr : request.getRemoteAddr(); + } + + /** + * 上传文件 + * + * @param token token + * @param inputStream 文件流 + * @param folderId 父文件夹id + * @param mimeType 文件类型 + * @param fileName 文件名称 + * @param newFileName 新文件名 + * @param lastModifiedDate 上次修改时间 + * @param strategy 文件相同时候的策略 + * @param calcMD5 是否提前计算MD5值 + */ + public static ResultBean uploadFile(String token, FileInputStream inputStream, int folderId, String mimeType, String fileName, String newFileName, Date lastModifiedDate, UpgradeStrategy strategy, CalcMD5 calcMD5, int fileId) { + UploadFileInfo uploadFileInfo = new UploadFileInfo(); + uploadFileInfo.setName(fileName); + uploadFileInfo.setType(mimeType); + uploadFileInfo.setLastModifiedDate(lastModifiedDate); + + if (fileId > 0) { + uploadFileInfo.setFileId(fileId); + } + ResultBean resultBean = null; + try { + + resultBean = UploaderUtils.uploadFileByStream(token, folderId, strategy, + calcMD5.getValue(), newFileName, inputStream, uploadFileInfo); + } catch (IOException e) { + e.printStackTrace(); + return new ResultBean(); + } + return resultBean; + } + + /** + * 上传文件 + * + * @param token token + * @param inputStream 文件流 + * @param folderId 父文件夹id + * @param mimeType 文件类型 + * @param fileName 文件名称 + * @return + */ + public static ResultBean uploadFile(String token, FileInputStream inputStream, int folderId, String mimeType, String fileName, int fileId) { + String newFileName = fileName; + CalcMD5 calcMD5 = CalcMD5.Before; + Date lastModifiedDate = new Date(); + UpgradeStrategy strategy = UpgradeStrategy.MinorUpgrade; + return uploadFile(token, inputStream, folderId, mimeType, fileName, newFileName, lastModifiedDate, strategy, calcMD5, fileId); + } + + /** + * 获取文件下载的地址 + * + * @param fileId 文件id + * @param verId 文件版本id + * @param token token + * @return + */ + + public static String createDownFileURL(int fileId, int verId, String token) { + + + //2.拼装下载URL + StringBuilder url = new StringBuilder(SdkBaseInfo.baseUrl); + + url.append("/downLoad/index?token="); + url.append(token); + url.append("&fileIds="); + url.append(fileId); + return url.toString(); + } + + public static String batchDownload(List fileIds, List folders,String token) throws Exception { + if(fileIds == null){ + fileIds = new ArrayList<>(); + } + if(folders == null){ + folders = new ArrayList() ; + } + if (fileIds.isEmpty() && folders.isEmpty()) { + throw new Exception("文件id与文件夹id不能同时为空"); + } + String fileString = "";// + StringBuilder stringBuilder = new StringBuilder(BATCH_URL); + stringBuilder.append("/Download/DownLoadCheck?token="); + stringBuilder.append(token); + if(fileIds.size() > 0){ + fileString = org.apache.commons.lang.StringUtils.join(fileIds.toArray(), ','); + stringBuilder.append("&fileIds=").append(fileString); + } + else{ + stringBuilder.append("&fileIds=").append(""); + } + if(folders.size() > 0){ + fileString = org.apache.commons.lang.StringUtils.join(folders.toArray(), ','); + stringBuilder.append("&folderIds=").append(fileString); + } + else{ + stringBuilder.append("&folderIds=").append(""); + } + return stringBuilder.toString(); + } + + /** + * 删除文件 + * + * @param token token + * @param fileIDList 文件ids + * @param folderIDList 文件夹ids + * @return + */ + public static ReturnValueResult deleteFile(String token, ArrayList fileIDList, ArrayList folderIDList) { + IDocAppService service = FacadeProxy.newProxyInstance(IDocAppService.class); + FileListAndFolderListDto fileListAndFolderListDto = new FileListAndFolderListDto(); + fileListAndFolderListDto.setFileIdList(fileIDList); + fileListAndFolderListDto.setFilePathList(new ArrayList()); + fileListAndFolderListDto.setFolderIdList(folderIDList); + fileListAndFolderListDto.setFolderPathList(new ArrayList()); + fileListAndFolderListDto.setToken(token); + return service.RemoveFolderListAndFileList(fileListAndFolderListDto); + } + + public static void main(String[] args) { + List filesId = new ArrayList(); + filesId.add(1); + filesId.add(2); + filesId.add(4); + // System.out.println(batchDownload(filesId, "")); + } + + +} diff --git a/src/main/java/com/fr/plugin/edo/tabDataSource/HyDataModel.java b/src/main/java/com/fr/plugin/edo/tabDataSource/HyDataModel.java new file mode 100644 index 0000000..0b54559 --- /dev/null +++ b/src/main/java/com/fr/plugin/edo/tabDataSource/HyDataModel.java @@ -0,0 +1,41 @@ +package com.fr.plugin.edo.tabDataSource; + +import com.fr.data.AbstractDataModel; +import com.fr.general.data.TableDataException; +import com.fr.log.FineLoggerFactory; +import com.fr.plugin.edo.tabDataSource.model.SearchResult; + +import java.util.ArrayList; + +public class HyDataModel extends AbstractDataModel { + private String[] columnNames = SearchResult.columnNames; + public ArrayList results = new ArrayList(); + + public HyDataModel(ArrayList results){ + this.results = results; + } + + @Override + public int getColumnCount() throws TableDataException { + return columnNames.length; + } + + @Override + public String getColumnName(int i) throws TableDataException { + return columnNames[i]; + } + + @Override + public int getRowCount() throws TableDataException { + return results.size(); + } + + @Override + public Object getValueAt(int rowIdx, int colIdx) throws TableDataException { + String columnName = columnNames[colIdx]; + SearchResult res = results.get(rowIdx); + Object value = res.getColumnValue(columnName); + FineLoggerFactory.getLogger().info("列:"+columnName+",值:"+value); + return value; + } +} diff --git a/src/main/java/com/fr/plugin/edo/tabDataSource/HyTableData.java b/src/main/java/com/fr/plugin/edo/tabDataSource/HyTableData.java new file mode 100644 index 0000000..7213a8c --- /dev/null +++ b/src/main/java/com/fr/plugin/edo/tabDataSource/HyTableData.java @@ -0,0 +1,123 @@ +package com.fr.plugin.edo.tabDataSource; + +import com.fr.data.AbstractParameterTableData; +import com.fr.general.data.DataModel; +import com.fr.json.JSONObject; +import com.fr.log.FineLoggerFactory; +import com.fr.plugin.edo.submit.EDOFileUtils; +import com.fr.plugin.edo.tabDataSource.model.SearchResult; +import com.fr.plugin.edo.util.HttpUtil; +import com.fr.script.Calculator; +import com.fr.stable.ParameterProvider; +import com.fr.stable.StringUtils; +import com.fr.third.alibaba.druid.support.json.JSONUtils; + +import java.util.ArrayList; +import java.util.LinkedHashMap; + +public class HyTableData extends AbstractParameterTableData { + @Override + public DataModel createDataModel(Calculator calculator) { + ParameterProvider[] parameters = Calculator.processParameters(calculator,super.getParameters(calculator)); + String folderId = ""; // 搜索的文件夹Id 1代表全库 + String filename = ""; + String filecontent = ""; + for(ParameterProvider pp : parameters){ + Object value = pp.getValue(); + if(pp.getName().equals("folderId")){ + if(value != null){ + folderId = value.toString(); + } + } + if(pp.getName().equals("fileName")){ + if(value != null){ + filename = value.toString(); + } + } + if(pp.getName().equals("fileContent")){ + if(value != null){ + filecontent = value.toString(); + } + } + } + + if(folderId.equals("$folderId")){ + folderId = "1"; + } + if(filecontent.equals("$fileContent")){ + filecontent = ""; + } + if(filename.equals("$fileName")){ + filename = ""; + } + + FineLoggerFactory.getLogger().info("参数folderId:"+folderId+",filename:"+filename+",filecontent:"+filecontent); + String queryStr = "filepath:("+folderId+")"; + boolean isMask = true; //是否模糊搜索 + if(StringUtils.isNotEmpty(filename) && StringUtils.isNotEmpty(filecontent)){ + if(isMask == true){ + filename = filename; + filecontent = filecontent; + } + else{ + filename = "\""+filename+"\\\""; + filecontent ="\""+filecontent+"\\\""; + } + queryStr+= (" AND (filename:"+filename +" OR filecontent:"+filecontent+")"); + } + if(StringUtils.isNotEmpty(filename) && StringUtils.isEmpty(filecontent)){ + if(isMask == true){ + filename = filename; + } + else{ + filename = "\""+filename+"\""; + } + queryStr+= (" AND (filename: "+filename+")"); + // queryStr+= (" AND (filename: “+filename+”)"); + } + if(StringUtils.isNotEmpty(filecontent ) && StringUtils.isEmpty(filename)){ + if(isMask == true){ + filecontent = filecontent; + } + else{ + filecontent ="\""+filecontent+"\\\""; + } + queryStr+= (" AND (filecontent:"+filecontent+")"); + } + + + FineLoggerFactory.getLogger().info("参数queryStr:"+queryStr); + JSONObject jsonObj = new JSONObject(); + jsonObj.put("ArgsXml", "010"); + jsonObj.put("Lang", "zh-cn"); + jsonObj.put("metaDataSearch", false); + jsonObj.put("searchType", "MixFile"); + jsonObj.put("SearchXml", "{\"from\":0,\"size\":10,\"_source\":{\"excludes\":[\"filecontent\"]},\"sort\":[{\"_score\":{\"order\":\"desc\"}}],\"query\":{\"query_string\":{\"query\":\"(" + queryStr+ ")\",\"default_operator\":\"AND\"}},\"highlight\":{\"fields\":{\"filename\":{},\"filecontent\":{\"type\":\"fvh\"}},\"pre_tags\":\"\",\"post_tags\":\"\",\"number_of_fragments\":3,\"no_match_size\":250}}"); + jsonObj.put("StartNum",0); + jsonObj.put("Token", EDOFileUtils.createToken1("gb", EDOFileUtils.TOKEN_IP)); + String jsonData = jsonObj.toString(); + FineLoggerFactory.getLogger().info("参数jsonData:"+jsonData); + String reqResult = HttpUtil.doPost(EDOFileUtils.SEARCH_URL,jsonData); + FineLoggerFactory.getLogger().info("结果:"+reqResult); + Object obj = JSONUtils.parse(reqResult); + ArrayList results = new ArrayList(); + + if (obj instanceof LinkedHashMap) { + LinkedHashMap lhm = (LinkedHashMap) obj; + if((int)lhm.get("result") == 0){ + LinkedHashMap data = (LinkedHashMap)lhm.get("data"); + LinkedHashMap docListInfo = (LinkedHashMap)data.get("DocListInfo"); + if(docListInfo.containsKey("FilesInfo")){ + ArrayList filesInfo = (ArrayList)docListInfo.get("FilesInfo"); + for (LinkedHashMap lhm1 : filesInfo){ + SearchResult sr = new SearchResult(); + sr.parseMap(lhm1); + results.add(sr); + } + } + } + } + + return new HyDataModel(results); + } +} diff --git a/src/main/java/com/fr/plugin/edo/tabDataSource/HyTableDataDefineProvider.java b/src/main/java/com/fr/plugin/edo/tabDataSource/HyTableDataDefineProvider.java new file mode 100644 index 0000000..20fbc4a --- /dev/null +++ b/src/main/java/com/fr/plugin/edo/tabDataSource/HyTableDataDefineProvider.java @@ -0,0 +1,37 @@ +package com.fr.plugin.edo.tabDataSource; + +import com.fr.base.TableData; +import com.fr.design.data.tabledata.tabledatapane.AbstractTableDataPane; +import com.fr.design.fun.impl.AbstractTableDataDefineProvider; + +public class HyTableDataDefineProvider extends AbstractTableDataDefineProvider { + @Override + public Class classForTableData() { + return HyTableData.class; + } + + @Override + public Class classForInitTableData() { + return HyTableData.class; + } + + @Override + public Class appearanceForTableData() { + return HyTableDataPane.class; + } + + @Override + public String nameForTableData() { + return "hy datas"; + } + + @Override + public String prefixForTableData() { + return "hy"; + } + + @Override + public String iconPathForTableData() { + return "com/fr/plugin/web/js/icon.png"; + } +} diff --git a/src/main/java/com/fr/plugin/edo/tabDataSource/HyTableDataPane.java b/src/main/java/com/fr/plugin/edo/tabDataSource/HyTableDataPane.java new file mode 100644 index 0000000..830a523 --- /dev/null +++ b/src/main/java/com/fr/plugin/edo/tabDataSource/HyTableDataPane.java @@ -0,0 +1,75 @@ +package com.fr.plugin.edo.tabDataSource; + +import com.fr.base.BaseUtils; +import com.fr.base.Parameter; +import com.fr.design.data.datapane.preview.PreviewTablePane; +import com.fr.design.data.tabledata.tabledatapane.AbstractTableDataPane; +import com.fr.design.gui.ibutton.UIButton; +import com.fr.design.gui.ilable.UILabel; +import com.fr.design.gui.itableeditorpane.ParameterTableModel; +import com.fr.design.gui.itableeditorpane.UITableEditorPane; +import com.fr.design.gui.itableeditorpane.UITableModelAdapter; +import com.fr.design.layout.TableLayout; +import com.fr.design.layout.TableLayoutHelper; +import com.fr.stable.ParameterProvider; +import com.fr.script.Calculator; +import javax.swing.*; +import java.awt.*; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; + +public class HyTableDataPane extends AbstractTableDataPane { + + private UITableEditorPane parameterTableEditorPane; + + public HyTableDataPane(){ + setLayout(new BorderLayout()); + UIButton preview = new UIButton(BaseUtils.readIcon("/com/fr/design/images/m_file/preview.png")); + preview.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + SwingUtilities.invokeLater(new Runnable() { + @Override + public void run() { + PreviewTablePane.previewTableData(HyTableDataPane.this.updateBean()); + } + }); + } + }); + + add(TableLayoutHelper.createTableLayoutPane( + new Component[][] {{ + new UILabel("配置"),preview + }}, + new double[] { TableLayout.PREFERRED }, + new double[] { TableLayout.FILL,TableLayout.PREFERRED } + ),BorderLayout.NORTH); + + UITableModelAdapter model = new ParameterTableModel(); + parameterTableEditorPane = new UITableEditorPane(model); + + add(parameterTableEditorPane,BorderLayout.SOUTH); + } + + @Override + public void populateBean(HyTableData data) { + Calculator c = Calculator.createCalculator(); + ParameterProvider[] parameters = data.getParameters(c); + parameterTableEditorPane.populate(parameters); + } + + @Override + public HyTableData updateBean() { + HyTableData data = new HyTableData(); + // data.setConfig( config.getText() ); + java.util.List parameterProviderList = parameterTableEditorPane.update(); + Parameter[] parameters = parameterProviderList.toArray(new Parameter[parameterProviderList.size()]); + data.setParameters(parameters); + return data; + } + + @Override + protected String title4PopupWindow() { + return "xx文件搜索"; + } +} diff --git a/src/main/java/com/fr/plugin/edo/tabDataSource/model/SearchResult.java b/src/main/java/com/fr/plugin/edo/tabDataSource/model/SearchResult.java new file mode 100644 index 0000000..768629f --- /dev/null +++ b/src/main/java/com/fr/plugin/edo/tabDataSource/model/SearchResult.java @@ -0,0 +1,565 @@ +package com.fr.plugin.edo.tabDataSource.model; + +import java.util.LinkedHashMap; + +public class SearchResult { + public static final String[] columnNames = new String[]{ + "id", + "name", + "code", + "path", + "parentFolderId", + "tagContent", + "extName", + "size", + "createTime", + "modifyTime", + "creatorId", + "creatorName", + "state", + "remark", + + "highlightname", + "fileTags", + "editorId", + "editorName", + "fileType", + "currentOperatorId", + "currentOperator", + "lastVerId", + "lastVerNumStr", + "securityLevelId", + "securityLevelName", + "secLevelDegree", + "isAttachment", + "masterFileId", + "masterFilePath", + "FileCipherText", + "archiveOperator", + "archiveTime", + "content", + "relativePath", + "permission", + "favoriteId", + "favoriteType", + "isfavorite" + }; + + public void parseMap(LinkedHashMap map) { + this.id = map.get("id").toString(); + this.name = map.get("name").toString(); + this.code = map.get("code").toString(); + this.path = map.get("path").toString(); + this.parentFolderId = map.get("parentFolderId").toString(); + this.tagContent = map.get("tagContent").toString(); + this.extName = map.get("extName").toString(); + this.size = (int) map.get("size"); + this.createTime = map.get("createTime").toString(); + this.modifyTime = map.get("modifyTime").toString(); + this.creatorId = map.get("creatorId").toString(); + this.creatorName = map.get("creatorName").toString(); + this.state = (int) map.get("state"); + this.remark = map.get("remark").toString(); + + + this.highlightname = map.get("highlightname").toString(); + this.fileTags = map.get("fileTags").toString(); + this.editorId = (int) map.get("editorId"); + this.editorName = map.get("editorName").toString(); + this.fileType = (int) map.get("fileType"); + this.currentOperatorId = (int) map.get("currentOperatorId"); + this.currentOperator = map.get("currentOperator").toString(); + this.lastVerId = (int) map.get("lastVerId"); + this.lastVerNumStr = map.get("lastVerNumStr").toString(); + this.securityLevelId = (int) map.get("securityLevelId"); + this.securityLevelName = map.get("securityLevelName").toString(); + this.secLevelDegree = (int) map.get("secLevelDegree"); + this.isAttachment = (boolean) map.get("isAttachment"); + this.masterFileId = (int) map.get("masterFileId"); + if(map.get("masterFilePath") != null){ + this.masterFilePath = map.get("masterFilePath").toString(); + } + else{ + this.masterFilePath = ""; + } + this.FileCipherText = (boolean) map.get("FileCipherText"); + this.archiveOperator = map.get("archiveOperator").toString(); + this.archiveTime = map.get("archiveTime").toString(); + this.content = map.get("content").toString(); + this.relativePath = map.get("relativePath").toString(); + this.permission = (int) map.get("permission"); + this.favoriteId = map.get("favoriteId").toString(); + this.favoriteType = map.get("favoriteType").toString(); + this.isfavorite = (boolean) map.get("isfavorite"); + + } + + public Object getColumnValue(String columnName) { + if ("id".equals(columnName)) { + return this.getId(); + } + if ("name".equals(columnName)) { + return this.getName(); + } + if ("code".equals(columnName)) { + return this.getCode(); + } + if ("path".equals(columnName)) { + return this.getPath(); + } + if ("parentFolderId".equals(columnName)) { + return this.getParentFolderId(); + } + if ("tagContent".equals(columnName)) { + return this.getTagContent(); + } + if ("extName".equals(columnName)) { + return this.getExtName(); + } + if ("size".equals(columnName)) { + return this.getSize(); + } + if ("createTime".equals(columnName)) { + return this.getCreateTime(); + } + if ("modifyTime".equals(columnName)) { + return this.getModifyTime(); + } + if ("creatorId".equals(columnName)) { + return this.getCreatorId(); + } + if ("creatorName".equals(columnName)) { + return this.getCreatorName(); + } + if ("state".equals(columnName)) { + return this.getState(); + } + if ("remark".equals(columnName)) { + return this.getRemark(); + } + if ("highlightname".equals(columnName)) { + return this.highlightname; + } + if ("fileTags".equals(columnName)) { + return this.fileTags; + } + if ("editorId".equals(columnName)) { + return this.editorId; + } + if ("editorName".equals(columnName)) { + return this.editorName; + } + if ("fileType".equals(columnName)) { + return this.fileType; + } + if ("currentOperatorId".equals(columnName)) { + return this.currentOperatorId; + } + if ("currentOperator".equals(columnName)) { + return this.currentOperator; + } + if ("lastVerId".equals(columnName)) { + return this.lastVerId; + } + if ("lastVerNumStr".equals(columnName)) { + return this.lastVerNumStr; + } + if ("securityLevelId".equals(columnName)) { + return this.securityLevelId; + } + if ("securityLevelName".equals(columnName)) { + return this.securityLevelName; + } + if ("secLevelDegree".equals(columnName)) { + return this.secLevelDegree; + } + if ("isAttachment".equals(columnName)) { + return this.isAttachment; + } + if ("masterFileId".equals(columnName)) { + return this.masterFileId; + } + if ("masterFilePath".equals(columnName)) { + return this.masterFilePath; + } + if ("FileCipherText".equals(columnName)) { + return this.FileCipherText; + } + if ("archiveOperator".equals(columnName)) { + return this.archiveOperator; + } + if ("archiveTime".equals(columnName)) { + return this.archiveTime; + } + if ("content".equals(columnName)) { + return this.content; + } + if ("relativePath".equals(columnName)) { + return this.relativePath; + } + if ("permission".equals(columnName)) { + return this.permission; + } + if ("favoriteId".equals(columnName)) { + return this.favoriteId; + } + if ("favoriteType".equals(columnName)) { + return this.favoriteType; + } + if ("isfavorite".equals(columnName)) { + return this.isfavorite; + } + + + return ""; + } + + private String id; + private String name; + private String code; + private String path; + private String parentFolderId; + private String tagContent; + private String extName; + private int size; + private String createTime; + private String modifyTime; + private String creatorId; + private String creatorName; + private int state; + private String remark; + + private String highlightname; + private String fileTags; + private int editorId; + private String editorName; + private int fileType; + private int currentOperatorId; + private String currentOperator; + private int lastVerId; + private String lastVerNumStr; + private int securityLevelId; + private String securityLevelName; + private int secLevelDegree; + private boolean isAttachment; + private int masterFileId; + private String masterFilePath; + private boolean FileCipherText; + private String archiveOperator; + private String archiveTime; + private String content; + private String relativePath; + private int permission; + private String favoriteId; + private String favoriteType; + private boolean isfavorite; + + + public String getHighlightname() { + return highlightname; + } + + public void setHighlightname(String highlightname) { + this.highlightname = highlightname; + } + + public String getFileTags() { + return fileTags; + } + + public void setFileTags(String fileTags) { + this.fileTags = fileTags; + } + + public int getEditorId() { + return editorId; + } + + public void setEditorId(int editorId) { + this.editorId = editorId; + } + + public String getEditorName() { + return editorName; + } + + public void setEditorName(String editorName) { + this.editorName = editorName; + } + + public int getFileType() { + return fileType; + } + + public void setFileType(int fileType) { + this.fileType = fileType; + } + + public int getCurrentOperatorId() { + return currentOperatorId; + } + + public void setCurrentOperatorId(int currentOperatorId) { + this.currentOperatorId = currentOperatorId; + } + + public String getCurrentOperator() { + return currentOperator; + } + + public void setCurrentOperator(String currentOperator) { + this.currentOperator = currentOperator; + } + + public int getLastVerId() { + return lastVerId; + } + + public void setLastVerId(int lastVerId) { + this.lastVerId = lastVerId; + } + + public String getLastVerNumStr() { + return lastVerNumStr; + } + + public void setLastVerNumStr(String lastVerNumStr) { + this.lastVerNumStr = lastVerNumStr; + } + + public int getSecurityLevelId() { + return securityLevelId; + } + + public void setSecurityLevelId(int securityLevelId) { + this.securityLevelId = securityLevelId; + } + + public String getSecurityLevelName() { + return securityLevelName; + } + + public void setSecurityLevelName(String securityLevelName) { + this.securityLevelName = securityLevelName; + } + + public int getSecLevelDegree() { + return secLevelDegree; + } + + public void setSecLevelDegree(int secLevelDegree) { + this.secLevelDegree = secLevelDegree; + } + + public boolean isAttachment() { + return isAttachment; + } + + public void setAttachment(boolean attachment) { + isAttachment = attachment; + } + + public int getMasterFileId() { + return masterFileId; + } + + public void setMasterFileId(int masterFileId) { + this.masterFileId = masterFileId; + } + + public String getMasterFilePath() { + return masterFilePath; + } + + public void setMasterFilePath(String masterFilePath) { + this.masterFilePath = masterFilePath; + } + + public boolean isFileCipherText() { + return FileCipherText; + } + + public void setFileCipherText(boolean fileCipherText) { + FileCipherText = fileCipherText; + } + + public String getArchiveOperator() { + return archiveOperator; + } + + public void setArchiveOperator(String archiveOperator) { + this.archiveOperator = archiveOperator; + } + + public String getArchiveTime() { + return archiveTime; + } + + public void setArchiveTime(String archiveTime) { + this.archiveTime = archiveTime; + } + + public String getContent() { + return content; + } + + public void setContent(String content) { + this.content = content; + } + + public String getRelativePath() { + return relativePath; + } + + public void setRelativePath(String relativePath) { + this.relativePath = relativePath; + } + + public int getPermission() { + return permission; + } + + public void setPermission(int permission) { + this.permission = permission; + } + + public String getFavoriteId() { + return favoriteId; + } + + public void setFavoriteId(String favoriteId) { + this.favoriteId = favoriteId; + } + + public String getFavoriteType() { + return favoriteType; + } + + public void setFavoriteType(String favoriteType) { + this.favoriteType = favoriteType; + } + + public boolean isIsfavorite() { + return isfavorite; + } + + public void setIsfavorite(boolean isfavorite) { + this.isfavorite = isfavorite; + } + + public static String[] getColumnNames() { + return columnNames; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getCode() { + return code; + } + + public void setCode(String code) { + this.code = code; + } + + public String getPath() { + return path; + } + + public void setPath(String path) { + this.path = path; + } + + public String getParentFolderId() { + return parentFolderId; + } + + public void setParentFolderId(String parentFolderId) { + this.parentFolderId = parentFolderId; + } + + public String getTagContent() { + return tagContent; + } + + public void setTagContent(String tagContent) { + this.tagContent = tagContent; + } + + public String getExtName() { + return extName; + } + + public void setExtName(String extName) { + this.extName = extName; + } + + public int getSize() { + return size; + } + + public void setSize(int size) { + this.size = size; + } + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public String getModifyTime() { + return modifyTime; + } + + public void setModifyTime(String modifyTime) { + this.modifyTime = modifyTime; + } + + public String getCreatorId() { + return creatorId; + } + + public void setCreatorId(String creatorId) { + this.creatorId = creatorId; + } + + public String getCreatorName() { + return creatorName; + } + + public void setCreatorName(String creatorName) { + this.creatorName = creatorName; + } + + public int getState() { + return state; + } + + public void setState(int state) { + this.state = state; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } +} diff --git a/src/main/java/com/fr/plugin/edo/util/HttpUtil.java b/src/main/java/com/fr/plugin/edo/util/HttpUtil.java new file mode 100644 index 0000000..26180a8 --- /dev/null +++ b/src/main/java/com/fr/plugin/edo/util/HttpUtil.java @@ -0,0 +1,241 @@ +package com.fr.plugin.edo.util; + +import com.fr.log.FineLoggerFactory; + +import javax.net.ssl.*; +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.net.HttpURLConnection; +import java.net.URL; +import java.security.cert.CertificateException; + +public class HttpUtil { + + private static String parseStringHttpsReq(HttpURLConnection conn) throws IOException { + InputStream inputStream = conn.getInputStream(); + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + byte[] buf = new byte[1024]; + int len = 0; + while ((len = inputStream.read(buf)) != -1) { + baos.write(buf, 0, len); + } + baos.flush(); + String result = baos.toString(); + inputStream.close(); + baos.close(); + return result; + } + + private static HttpURLConnection getConnection(URL url) throws IOException { + HttpUtil.trustAllHosts(); + HttpURLConnection conn = null; + HttpsURLConnection https = (HttpsURLConnection) url.openConnection(); + https.setHostnameVerifier(HttpUtil.DO_NOT_VERIFY); + conn = https; + conn.setRequestMethod("GET");//设置请求方式 + conn.setConnectTimeout(6000); + conn.setReadTimeout(6000); + conn.setDoInput(true); + conn.setDoOutput(true); + conn.setRequestProperty("Content-Type", "application/json;charset=utf-8"); + + return conn; + } + + public static String doGet(String reqUrl) throws IOException { + FineLoggerFactory.getLogger().info("get req url:"+reqUrl); + URL url = new URL(reqUrl); + HttpURLConnection conn = getConnection(url); + int statusCode = conn.getResponseCode(); + FineLoggerFactory.getLogger().info("get req statusCode:"+statusCode); + String result = ""; + if (statusCode == 200) { + result = parseStringHttpsReq(conn); + } + return result; + } + + public static String doGetStream(String reqUrl, HttpServletResponse res) throws IOException { + FineLoggerFactory.getLogger().info("get req url:"+reqUrl); + URL url = new URL(reqUrl); + HttpURLConnection conn = getConnection(url); + int statusCode = conn.getResponseCode(); + FineLoggerFactory.getLogger().info("get req statusCode:"+statusCode); + String result = ""; + if (statusCode == 200) { + InputStream inputStream = conn.getInputStream(); + int len; + byte[] b = new byte[1024]; + + try { + while ((len = inputStream.read(b, 0, 1024)) != -1) { + res.getOutputStream().write(b, 0, len); + } + + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } finally { + if (inputStream != null) { + inputStream.close(); + } + } + } + return result; + } + + public static String doPost(String reqUrl,String jsonData){ + FineLoggerFactory.getLogger().info("post req url:" + reqUrl+",jsonData:"+jsonData); + if(reqUrl.indexOf("https") != -1){ + return doPostHttpsReq(jsonData,reqUrl); + } + else{ + return doPostHttpReq(jsonData,reqUrl); + } + } + + public static String doPostHttpsReq(String jsonData, String reqUrl) { + HttpUtil.trustAllHosts(); + // HttpURLConnection con = null; + HttpsURLConnection con = null; + BufferedReader buffer = null; + StringBuffer resultBuffer = null; + String result = ""; + try { + URL url = new URL(reqUrl); + // 得到连接对象 + // con = (HttpURLConnection) url.openConnection(); + con = (HttpsURLConnection) url.openConnection(); + con.setHostnameVerifier(HttpUtil.DO_NOT_VERIFY); + // 设置请求类型 + con.setRequestMethod("POST"); + con.setRequestProperty("Content-Type", "application/json;charset=utf-8"); + + con.setDoOutput(true); + con.setDoInput(true); + con.setUseCaches(false); + con.setConnectTimeout(6000); + con.setReadTimeout(6000); + con.connect(); + String body = jsonData; + BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(con.getOutputStream(), "UTF-8")); + writer.write(body); + writer.close(); + + + int responseCode = con.getResponseCode(); + FineLoggerFactory.getLogger().info("sendRedirect responseCode:" + responseCode); + if (responseCode == HttpURLConnection.HTTP_OK) { + InputStream inputStream = con.getInputStream(); + resultBuffer = new StringBuffer(); + String line; + buffer = new BufferedReader(new InputStreamReader(inputStream, "UTF-8")); + while ((line = buffer.readLine()) != null) { + resultBuffer.append(line); + } + result = resultBuffer.toString(); + FineLoggerFactory.getLogger().info("result:" + result); + } + } catch (Exception e) { + e.printStackTrace(); + FineLoggerFactory.getLogger().info("失败.................................:"+e.toString()); + } + + return result; + } + + public static String doPostHttpReq(String jsonData, String reqUrl) { + HttpURLConnection con = null; + BufferedReader buffer = null; + StringBuffer resultBuffer = null; + String result = ""; + try { + URL url = new URL(reqUrl); + // 得到连接对象 + con = (HttpURLConnection) url.openConnection(); + // 设置请求类型 + con.setRequestMethod("POST"); + con.setRequestProperty("Content-Type", "application/json;charset=utf-8"); + + con.setDoOutput(true); + con.setDoInput(true); + con.setUseCaches(false); + con.setConnectTimeout(6000); + con.setReadTimeout(6000); + con.connect(); + String body = jsonData; + BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(con.getOutputStream(), "UTF-8")); + writer.write(body); + writer.close(); + + + int responseCode = con.getResponseCode(); + FineLoggerFactory.getLogger().info("sendRedirect responseCode:" + responseCode); + if (responseCode == HttpURLConnection.HTTP_OK) { + InputStream inputStream = con.getInputStream(); + resultBuffer = new StringBuffer(); + String line; + buffer = new BufferedReader(new InputStreamReader(inputStream, "UTF-8")); + while ((line = buffer.readLine()) != null) { + resultBuffer.append(line); + } + result = resultBuffer.toString(); + FineLoggerFactory.getLogger().info("result:" + result); + } + } catch (Exception e) { + e.printStackTrace(); + FineLoggerFactory.getLogger().info("失败.................................:"+e.toString()); + } + + return result; + } + + public static String doPostCommonReq(String reqUrl, String jsonData) { + FineLoggerFactory.getLogger().info("post req url:" + reqUrl+",jsonData:"+jsonData); + if(reqUrl.indexOf("https") != -1){ + return doPostHttpsReq(reqUrl,jsonData); + } + else{ + return doPostHttpReq(reqUrl,jsonData); + } + } + + + private static void trustAllHosts() { + // Create a trust manager that does not validate certificate chains + TrustManager[] trustAllCerts = new TrustManager[] { new X509TrustManager() { + @Override + public void checkClientTrusted(java.security.cert.X509Certificate[] x509Certificates, String s) + throws CertificateException { + + } + + @Override + public void checkServerTrusted(java.security.cert.X509Certificate[] x509Certificates, String s) + throws CertificateException { + + } + + public java.security.cert.X509Certificate[] getAcceptedIssuers() { + return new java.security.cert.X509Certificate[] {}; + } + + } }; + // Install the all-trusting trust manager + try { + SSLContext sc = SSLContext.getInstance("TLS"); + sc.init(null, trustAllCerts, new java.security.SecureRandom()); + HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory()); + } catch (Exception e) { + e.printStackTrace(); + FineLoggerFactory.getLogger().info("error trustAllHosts----- HTTPS" + e.toString()); + } + } + + private final static HostnameVerifier DO_NOT_VERIFY = new HostnameVerifier() { + public boolean verify(String hostname, SSLSession session) { + return true; + } + }; + +} diff --git a/src/main/java/com/fr/plugin/edo/web/EDOJavaScriptFileHandler.java b/src/main/java/com/fr/plugin/edo/web/EDOJavaScriptFileHandler.java new file mode 100644 index 0000000..3e8ab30 --- /dev/null +++ b/src/main/java/com/fr/plugin/edo/web/EDOJavaScriptFileHandler.java @@ -0,0 +1,15 @@ +package com.fr.plugin.edo.web; + +import com.fr.stable.fun.impl.AbstractJavaScriptFileHandler; + +/** + * @author xx + * @version 10.0 + * @date 2021/6/29 + */ +public class EDOJavaScriptFileHandler extends AbstractJavaScriptFileHandler { + @Override + public String[] pathsForFiles() { + return new String[]{"/com/fr/plugin/web/js/utils/EDOJSUtils.js"}; + } +} diff --git a/src/main/resources/com/fr/plugin/web/js/arg.xml b/src/main/resources/com/fr/plugin/web/js/arg.xml new file mode 100644 index 0000000..06b7c88 --- /dev/null +++ b/src/main/resources/com/fr/plugin/web/js/arg.xml @@ -0,0 +1 @@ +010 \ No newline at end of file diff --git a/src/main/resources/com/fr/plugin/web/js/icon.png b/src/main/resources/com/fr/plugin/web/js/icon.png new file mode 100644 index 0000000..6e41b7e Binary files /dev/null and b/src/main/resources/com/fr/plugin/web/js/icon.png differ diff --git a/src/main/resources/com/fr/plugin/web/js/res.json b/src/main/resources/com/fr/plugin/web/js/res.json new file mode 100644 index 0000000..58c1a36 --- /dev/null +++ b/src/main/resources/com/fr/plugin/web/js/res.json @@ -0,0 +1,162 @@ +{ + "data": { + "DocListInfo": { + "InfoItems": [ + { + "Name": "basic:name", + "Title": "name", + "Width": 400, + "Remark": null, + "DataType": "docName" + }, + { + "Name": "basic:size", + "Title": "size", + "Width": 150, + "Remark": null, + "DataType": "fileSize" + }, + { + "Name": "basic:creator", + "Title": "creator", + "Width": 150, + "Remark": null, + "DataType": "string" + }, + { + "Name": "basic:editor", + "Title": "editor", + "Width": 150, + "Remark": null, + "DataType": "string" + }, + { + "Name": "basic:modifyTime", + "Title": "modifyTime", + "Width": 170, + "Remark": null, + "DataType": "datetime" + }, + { + "Name": "basic:version", + "Title": "version", + "Width": 100, + "Remark": null, + "DataType": "version" + }, + { + "Name": "basic:content", + "Title": "content", + "Width": 0, + "Remark": null, + "DataType": null + }, + { + "Name": "basic:highlightname", + "Title": "highlightname", + "Width": 0, + "Remark": null, + "DataType": null + }, + { + "Name": "basic:relativePath", + "Title": "relativePath", + "Width": 0, + "Remark": null, + "DataType": null + } + ], + "FoldersInfo": [], + "FilesInfo": [ + { + "id": 26, + "highlightname": "1630817226.png", + "name": "1630817226.png", + "code": "", + "path": "1\\16\\", + "parentFolderId": 16, + "tagContent": "", + "fileTags": [], + "extName": ".png", + "size": 88479, + "createTime": "2022-05-17 15:20:49", + "modifyTime": "2022-05-17 17:31:01", + "creatorId": 14, + "creatorName": "gongbin", + "editorId": 2, + "editorName": "Administrator", + "state": 0, + "remark": "", + "fileType": 2, + "currentOperatorId": 0, + "currentOperator": "", + "lastVerId": 25, + "lastVerNumStr": "1.0", + "securityLevelId": 0, + "securityLevelName": "", + "secLevelDegree": -1, + "isAttachment": false, + "masterFileId": 0, + "masterFilePath": null, + "FileCipherText": false, + "archiveOperator": 0, + "archiveTime": "2022-05-17 15:20:50", + "content": "", + "relativePath": "企业内容库\\我的文件1", + "permission": 1088391993, + "favoriteId": "", + "favoriteType": "", + "isfavorite": false + } + ], + "Settings": { + "searchTotalCount": 1, + "endNum": 1 + }, + "MustOnline": false, + "EnabledOutSend": false, + "SecurityEnable": false, + "ProcessStrategy": [], + "ArchiveStrategy": {}, + "IsArchive": false, + "CiphertextOutwardPolicy": 0 + }, + "DocViewInfoList": [ + { + "ViewId": 1, + "EntryType": 0, + "EntryId": 0, + "UserId": 0, + "ViewType": "standard", + "ViewName": "List", + "ConfigString": "basic:name400basic:size150basic:creator150basic:editor150basic:modifyTime170basic:version100basic:namefalse20List", + "IsDefault": true + }, + { + "ViewId": -2, + "EntryType": 0, + "EntryId": 0, + "UserId": 0, + "ViewType": "standard", + "ViewName": "Summary", + "ConfigString": "", + "IsDefault": false + }, + { + "ViewId": -3, + "EntryType": 0, + "EntryId": 0, + "UserId": 0, + "ViewType": "standard", + "ViewName": "Thumbnail", + "ConfigString": "basic:name400basic:namefalse20Thumbnail", + "IsDefault": false + } + ], + "StartNum": 0, + "EndNum": 1 + }, + "dataDescription": "", + "result": 0, + "message": "" +} \ No newline at end of file diff --git a/src/main/resources/com/fr/plugin/web/js/search.json b/src/main/resources/com/fr/plugin/web/js/search.json new file mode 100644 index 0000000..4ee8dc2 --- /dev/null +++ b/src/main/resources/com/fr/plugin/web/js/search.json @@ -0,0 +1,36 @@ +{ + "from": 0,//从多少条开始 + "size": 20,//每页显示记录条数 + "_source": { + "excludes": [ + "filecontent" + ] + }, + "sort": [ + { + "_score": { + "order": "desc" + } + } + ], + "query": { + "query_string": { + "query": " filepath:(1) AND (filename:\"aa\" OR filecontent:\"aa\")", + //filepath:搜索的文件夹Id 1代表全库;//如 aa 没有双引号是模糊搜索,如果有双引号 "aa" 则是精确搜索在传参的时候由于是字符串所以参数是 keyWord:"\"aa\"" 形式 + //搜索范围:filename --文件名 filecontent--文件内容 + "default_operator": "AND" + } + }, + "highlight": { + "fields": { + "filename": {}, + "filecontent": { + "type": "fvh" + } + }, + "pre_tags": "", + "post_tags": "", + "number_of_fragments": 3, + "no_match_size": 250 + } + } \ No newline at end of file diff --git a/src/main/resources/com/fr/plugin/web/js/utils/EDOJSUtils.js b/src/main/resources/com/fr/plugin/web/js/utils/EDOJSUtils.js new file mode 100644 index 0000000..5b9c847 --- /dev/null +++ b/src/main/resources/com/fr/plugin/web/js/utils/EDOJSUtils.js @@ -0,0 +1,186 @@ +/** + * @author xx + * @date 2021/6/29 + * @version 10.0 + */ +; !(function () { + console.log("加载文件管理JS。。。。。。。。。。。。。。。。。。") + var util = { + isMobile: function () { + try { + if (/Android|webOS|iPhone|iPod|BlackBerry/i.test(navigator.userAgent)) { + return true; + } else { + return false; + } + } catch (e) { + return false; + } + }, + + isAndroidMobile: function () { + try { + if (/Android/i.test(navigator.userAgent)) { + return true; + } else { + return false; + } + } catch (e) { + return false; + } + }, + postJSON: function (url, data, callback, error) { + url = FR.fineServletURL + url; + FR.ajax({ + type: "POST", + url: url, + contentType: "application/json; charset=utf-8", + data: JSON.stringify(data), + success: function (resp) { + $.isFunction(callback) && callback(resp); + }, + error: function (err) { + $.isFunction(error) && error(err); + } + }) + }, + get: function (url, data, callback, error) { + url = FR.fineServletURL + url; + FR.ajax({ + type: "GET", + url: url, + data: data, + success: function (resp) { + $.isFunction(callback) && callback(resp); + }, + error: function (err) { + $.isFunction(error) && error(err); + } + }) + } + }; + + + + + window["EDO"] = { + "downloadFile": function (fileId, verId, userName) {//下载 + if (util.isAndroidMobile()) { + console.log("android platform") + var url = "/edo/getDownloadUrlFr?fileId=" + fileId + "&verId=" + verId + "&edocName=" + userName; + util.get(url, {}, function (res) { + console.log("下载返回结果:" + JSON.stringify(res)) + if (!res.errorCode) { + var newUrl = location.protocol+"//"+ location.host+"/webroot/decision/edo/downloadFileFr?downFileName="+res.data; + console.log("下载地址为:"+newUrl) + + // window.open(newUrl) + // window.location.href = newUrl; + FR.doHyperlinkByGet({"url":newUrl}) + } else { + FR.Msg.toast(res.errorMsg); + } + }); + } + else { + console.log("not android platform") + var url = "/edo/download?fileId=" + fileId + "&verId=" + verId + "&edocName=" + userName; + util.get(url, {}, function (res) { + // FR.Msg.toast(res.data) + console.log("下载返回结果:" + JSON.stringify(res)) + if (!res.errorCode) { + // window.open(res.data) + //window.location.href = res.data; + FR.doHyperlinkByGet({"url":res.data}) + } else { + FR.Msg.toast(res.errorMsg); + } + }); + } + + }, + "priviewFile": function (fileId, userName) { //预览 + var url = "/edo/priview?fileId=" + fileId + "&edocName=" + userName; + + util.get(url, {}, function (res) { + // console.log("预览返回结果:" + JSON.stringify(res)) + // var isIphone = util.isIphoneMobile(); + // FR.Msg.toast("isIphone:"+isIphone); + if (!res.errorCode) { + // window.location.href = res.data; + FR.doHyperlinkByGet({"url":res.data}) + // var a = document.createElement("a"); + // a.href = res.data; + // a.click(); + + // window.location=res.data; + } else { + FR.Msg.toast(res.errorMsg); + } + }); + }, + "deleteFiles": function (fileIds, callback, userName) { //删除 + var url = "/edo/remove" + "?edocName=" + userName; + + util.postJSON(url, fileIds, function () { + callback && callback(); + }) + + }, + "batchDownload": function (fileIds, folders, userName) { //批量下载 + if (util.isAndroidMobile()) { + console.log("android platform") + var url = "/edo/batch/downloadFr" + "?edocName=" + userName; + util.postJSON(url, { fileIds: fileIds, folders: folders }, function (res) { + console.log("批量下载返回结果:" + JSON.stringify(res)) + if (!res.errorCode) { + var newUrl = location.protocol+"//"+ location.host+"/webroot/decision/edo/downloadFileFr?downFileName="+res.data; + console.log("下载地址为:"+newUrl) + // window.open(newUrl) + //window.location.href = newUrl; + // window.open(res.data) + FR.doHyperlinkByGet({"url":newUrl}) + } else { + FR.Msg.toast(res.errorMsg); + } + }) + } + else{ + console.log("not android platform") + var url = "/edo/batch/download" + "?edocName=" + userName; + util.postJSON(url, { fileIds: fileIds, folders: folders }, function (res) { + console.log("批量下载返回结果:" + JSON.stringify(res)) + if (!res.errorCode) { + //window.open(res.data) + FR.doHyperlinkByGet({"url":res.data}) + } else { + FR.Msg.toast(res.errorMsg); + } + }) + } + + }, + + "fileManager": function (folderId, userName, callback) { + var url = "/edo/file/manager?" + "folderId=" + folderId + "&edocName=" + userName; + + util.get(url, {}, function (res) { + if (!res.errorCode) { + if ($.isFunction(callback)) { + callback(res); + } else { + window.open(res.data) + } + } else { + FR.Msg.toast(res.errorMsg); + } + + }); + } + } + + + + + +})(); \ No newline at end of file