From 7957218d21a18857b43833df1cb4dbfefe353d64 Mon Sep 17 00:00:00 2001 From: richie Date: Wed, 21 Nov 2018 14:45:37 +0800 Subject: [PATCH] =?UTF-8?q?=E6=89=A9=E5=B1=95=E5=8D=95=E5=85=83=E6=A0=BC?= =?UTF-8?q?=E4=B8=8A=E4=BC=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- plugin.xml | 3 +- .../file/submit/oss/job/OssSubmitJob.java | 51 ++++++++++++++++++- 2 files changed, 51 insertions(+), 3 deletions(-) diff --git a/plugin.xml b/plugin.xml index 346ae7a..fc3f803 100644 --- a/plugin.xml +++ b/plugin.xml @@ -2,12 +2,13 @@ com.fr.plugin.file.submit.oss yes - 1.3 + 2.0 10.0 2018-11-02 author [2018-11-06]提供函数OssFile2Image,可以将OSS中的图片文件展示到报表中。
[2018-11-05]JavaScript事件中可以使用改插件。
[2018-11-05]下载无法使用$$$的问题。
diff --git a/src/main/java/com/fr/plugin/file/submit/oss/job/OssSubmitJob.java b/src/main/java/com/fr/plugin/file/submit/oss/job/OssSubmitJob.java index e1f6487..7302acf 100644 --- a/src/main/java/com/fr/plugin/file/submit/oss/job/OssSubmitJob.java +++ b/src/main/java/com/fr/plugin/file/submit/oss/job/OssSubmitJob.java @@ -7,12 +7,24 @@ import com.fr.intelli.record.Focus; import com.fr.intelli.record.Original; import com.fr.plugin.file.submit.oss.conf.FileSubmitOssServerConfig; import com.fr.plugin.file.submit.oss.fun.OssConstants; +import com.fr.plugin.file.submit.oss.fun.OssSubmitTarget; import com.fr.plugin.file.submit.oss.fun.OssSubmitTargetConfig; import com.fr.plugin.file.submit.oss.fun.OssUpload; +import com.fr.plugin.file.submit.oss.fun.OssVariableValue; import com.fr.record.analyzer.EnableMetrics; +import com.fr.report.worksheet.CalculatableResWorkSheet; import com.fr.script.Calculator; +import com.fr.stable.ColumnRow; +import com.fr.stable.ColumnRowRelated; import com.fr.stable.xml.XMLPrintWriter; import com.fr.stable.xml.XMLableReader; +import com.fr.write.DBWriteAction; +import com.fr.write.DMLReport; +import com.fr.write.cal.WB; + +import java.util.Arrays; +import java.util.HashSet; +import java.util.Set; /** * 提交到OSS的任务 @@ -39,12 +51,47 @@ public class OssSubmitJob extends AbstractSubmitTask { @Override @Focus(id = "com.fr.plugin.file.submit.oss", text = "Plugin-File_Submit_OSS", source = Original.PLUGIN) - public void doJob(Calculator calculator) throws Exception { + public void doJob(Calculator ca) throws Exception { ossClient = new OSSClient( FileSubmitOssServerConfig.getInstance().getEndPoint(), FileSubmitOssServerConfig.getInstance().getAccessKeyId(), FileSubmitOssServerConfig.getInstance().getAccessKeySecret()); - OssUpload.upload(calculator, ossClient, submitTargetConfig); + CalculatableResWorkSheet currentReport = ca.getAttribute(DMLReport.KEY); + if (submitTargetConfig != null && currentReport != null) { + ColumnRow[] crs = calculateRelatedColumnRows(submitTargetConfig); + if (currentReport instanceof WB) { + WB wb = (WB) (currentReport); + wb.setCurrentColumnRow(crs, (ColumnRow) ca.getAttribute(ColumnRow.class), ca, new DBWriteAction() { + @Override + public void run(int index, Calculator ca, int groupIdx) throws Exception { + OssUpload.upload(ca, ossClient, submitTargetConfig); + } + + @Override + public boolean isDynamic() { + return false; + } + }, -1); + } + } + } + + private ColumnRow[] calculateRelatedColumnRows(OssSubmitTargetConfig config) { + Set set = new HashSet(); + OssSubmitTarget[] targets = config.getSubmitTargets(); + for (OssSubmitTarget target : targets) { + set.addAll(Arrays.asList(getColumnRowsFromValue(target.getDirectory()))); + set.addAll(Arrays.asList(getColumnRowsFromValue(target.getName()))); + set.addAll(Arrays.asList(getColumnRowsFromValue(target.getFile()))); + } + return set.toArray(new ColumnRow[0]); + } + + private ColumnRow[] getColumnRowsFromValue(OssVariableValue value) { + if (value != null && value.getValue() instanceof ColumnRowRelated) { + return ((ColumnRowRelated) value.getValue()).getRelatedColumnRows(); + } + return new ColumnRow[0]; } @Override