浏览代码

apose excel转pdf

yuedefeng 7 年之前
父节点
当前提交
197855e109

+ 1 - 0
src/main/java/com/common/workflow/config/SecurityConfiguration.java

@@ -98,6 +98,7 @@ public class SecurityConfiguration extends WebSecurityConfigurerAdapter {
         .and()
             .authorizeRequests()
             .antMatchers("/api/acti/**").permitAll()
+            .antMatchers("/api/apose/**").permitAll()
             .antMatchers("/api/register").permitAll()
             .antMatchers("/api/activate").permitAll()
             .antMatchers("/api/authenticate").permitAll()

+ 31 - 0
src/main/java/com/common/workflow/service/activiti/ActivitiService.java

@@ -31,6 +31,7 @@ import org.activiti.engine.task.Task;
 import org.activiti.engine.task.TaskQuery;
 import org.activiti.image.ProcessDiagramGenerator;
 
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -141,6 +142,36 @@ public class ActivitiService {
         return businessKeys;
     }
 
+    /**
+     *
+     * <p>描述: 根据工作流Key 和 用户id查询已办任务列表</p>
+     */
+    public String findTaskHistByUserId(String processKey, String userId) {
+        List<HistoricTaskInstance>  hisTaskList = historyService.createHistoricTaskInstanceQuery()
+            .processDefinitionKey(processKey)
+            .taskAssignee(userId)
+            .orderByTaskId()
+            .desc()
+            .list();
+        List<String> businessKeyList = new ArrayList<>();
+        String businessKeys = "";
+
+        for (HistoricTaskInstance myTask : hisTaskList) {
+            List<HistoricVariableInstance> varList = historyService.createHistoricVariableInstanceQuery()
+                .processInstanceId(myTask.getProcessInstanceId())
+                .list();
+
+            for(HistoricVariableInstance hisvar : varList) {
+                if(hisvar.getVariableName().equals("businessKey") && !businessKeyList.contains(hisvar.getValue().toString())) {
+                    businessKeyList.add(hisvar.getValue().toString());
+                    break;
+                }
+            }
+        }
+        businessKeys = StringUtils.join(businessKeyList.toArray(), ",");
+        return businessKeys;
+    }
+
     /**
      * 查询当前用户的待办任务
      * @param processDefinitionKey 流程定义key(流程定义的标识)

+ 59 - 0
src/main/java/com/common/workflow/service/util/ExcelToPdf.java

@@ -0,0 +1,59 @@
+package com.common.workflow.service.util;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.net.HttpURLConnection;
+import java.net.URL;
+
+import com.aspose.cells.License;
+import com.aspose.cells.PdfSaveOptions;
+import com.aspose.cells.SaveFormat;
+import com.aspose.cells.Workbook;
+
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ * Created by gyue on 2019-01-21.
+ */
+public class ExcelToPdf {
+
+    public static boolean getLicense() {
+        boolean result = false;
+        try {
+            InputStream is = ExcelToPdf.class.getClassLoader().getResourceAsStream("license.xml"); //  license.xml应放在..\WebRoot\WEB-INF\classes路径下
+            License aposeLic = new License();
+            aposeLic.setLicense(is);
+            result = true;
+        }catch (Exception e) {
+            e.printStackTrace();
+        }
+        return result;
+    }
+
+    public static void excel2pdf(String Address, HttpServletResponse response) {
+        if (!getLicense()) {          // 验证License 若不验证则转化出的pdf文档会有水印产生
+            return;
+        }
+        try {
+            URL url = new URL(Address);
+            HttpURLConnection conn = (HttpURLConnection)url.openConnection();
+            //得到输入流
+            InputStream inputStream = conn.getInputStream();
+            Workbook wb = new Workbook(inputStream);// 原始excel路径
+
+            PdfSaveOptions pdfSaveOptions = new PdfSaveOptions();
+            pdfSaveOptions.setOnePagePerSheet(true);
+            pdfSaveOptions.setAllColumnsInOnePagePerSheet(true);
+            response.setContentType("application/pdf");
+            OutputStream output = response.getOutputStream();
+            wb.save(output, pdfSaveOptions);
+            output.flush();
+            inputStream.close();
+            output.close();
+        }catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+}

+ 5 - 0
src/main/java/com/common/workflow/web/rest/ActivitiResource.java

@@ -49,6 +49,11 @@ public class ActivitiResource {
         String businessKeys = activitiService.findTasksByUserId(actiVm.getProcessKey(), actiVm.getUserId());
         return ResponseEntity.ok(businessKeys);
     }
+    @PostMapping("/my-tasks-finished")
+    public ResponseEntity<String> getMyTasksFinished(@Valid @RequestBody ActiMyTaskVM actiVm) {
+        String businessKeys = activitiService.findTaskHistByUserId(actiVm.getProcessKey(), actiVm.getUserId());
+        return ResponseEntity.ok(businessKeys);
+    }
 
     @PostMapping("/historic-tasks")
     public ResponseEntity<List<ActiHistoricTaskDTO>> getHistoricTasks(@Valid @RequestBody ActiProcessVM actiVm) {

+ 32 - 0
src/main/java/com/common/workflow/web/rest/AposeResource.java

@@ -0,0 +1,32 @@
+package com.common.workflow.web.rest;
+
+import com.common.workflow.service.activiti.ActivitiService;
+import com.common.workflow.service.util.ExcelToPdf;
+import com.common.workflow.web.rest.vm.AposeVM;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.Valid;
+
+/**
+ * Created by gyue on 2019-01-21.
+ */
+@RestController
+@RequestMapping("/api/apose")
+public class AposeResource {
+    private final Logger log = LoggerFactory.getLogger(AposeResource.class);
+
+    public AposeResource() {
+    }
+
+    @PostMapping("/excel-to-pdf")
+    public void Excel2pdf(@Valid @RequestBody AposeVM aposeVM, HttpServletResponse response) {
+        ExcelToPdf.excel2pdf(aposeVM.getAddressUrl(), response);
+    }
+
+}

+ 16 - 0
src/main/java/com/common/workflow/web/rest/vm/AposeVM.java

@@ -0,0 +1,16 @@
+package com.common.workflow.web.rest.vm;
+
+/**
+ * Created by gyue on 2019-01-21.
+ */
+public class AposeVM {
+    private String addressUrl;
+
+    public String getAddressUrl() {
+        return addressUrl;
+    }
+
+    public void setAddressUrl(String addressUrl) {
+        this.addressUrl = addressUrl;
+    }
+}

+ 13 - 0
src/main/resources/license.xml

@@ -0,0 +1,13 @@
+<License>
+  <Data>
+    <Products>
+      <Product>Aspose.Total for Java</Product>
+      <Product>Aspose.Words for Java</Product>
+    </Products>
+    <EditionType>Enterprise</EditionType>
+    <SubscriptionExpiry>20991231</SubscriptionExpiry>
+    <LicenseExpiry>20991231</LicenseExpiry>
+    <SerialNumber>8bfe198c-7f0c-4ef8-8ff0-acc3237bf0d7</SerialNumber>
+  </Data>
+  <Signature>sNLLKGMUdF0r8O1kKilWAGdgfs2BvJb/2Xp8p5iuDVfZXmhppo+d0Ran1P9TKdjV4ABwAgKXxJ3jcQTqE/2IRfqwnPf8itN8aFZlV3TJPYeD3yWE7IT55Gz6EijUpC7aKeoohTb4w2fpox58wWoF3SNp6sK6jDfiAUGEHYJ9pjU=</Signature>
+</License>