// 上传正文 @Override public String input() throws Exception { HttpServletRequest request = ServletActionContext.getRequest(); MultiPartRequestWrapper wrapper = (MultiPartRequestWrapper) request; File filePath = wrapper.getFiles("Filedata")[0]; String fileName = request.getParameter("Filename"); BufferedInputStream bis = new BufferedInputStream(new FileInputStream(filePath)); Document document = new Document(); document.setFileSize(bis.available()); document.setFileName(fileName); document.setCreatedTime(new Date()); if (request.getParameter("taskId") != null) { long taskId = Long.valueOf(request.getParameter("taskId")); WorkflowTask task = ApiFactory.getTaskService().getTask(taskId); document.setTaskMode(task.getProcessingMode()); document.setTaskName(task.getName()); document.setWorkflowId(task.getProcessInstanceId()); document.setCompanyId(task.getCompanyId()); document.setCreator(task.getTransactor()); document.setCreatorName(task.getTransactorName()); } String fileType = fileName.substring(fileName.lastIndexOf(".") + 1, fileName.length()); if (!("pdf").equals(fileType)) { fileType = "." + fileType; } document.setFileType(fileType); officeManager.saveDocument(document); DocumentFile file = new DocumentFile(); byte[] content = null; try { content = new byte[bis.available()]; bis.read(content); } catch (IOException e) { e.printStackTrace(); } finally { bis.close(); } file.setFileBody(content); file.setDocumentId(document.getId()); file.setCompanyId(document.getCompanyId()); officeManager.saveDocumentFile(file); return "DOCUMENTID:" + document.getId(); }
private void setOfficeRight(Document document, WorkflowInstance instance, WorkflowTask task) { StringBuilder editType = new StringBuilder("-1"); // "-1,0,1,1,0,0,1,1";//查看保留痕迹 if (urgenFlag != null && urgenFlag) { editType.append(",0,1,1,0,0,1,1"); document.setEditType(editType.toString()); document.setPrintSetting(true); document.setDownloadSetting(true); } else if (viewFlag != null && viewFlag) { editType.append(",1,0,0,0,0,1,1"); document.setEditType(editType.toString()); document.setPrintSetting(false); document.setDownloadSetting(false); } else { // 是否保户文档 if (TaskState.WAIT_TRANSACT.getIndex().equals(task.getActive()) && workflowRightsManager.officialTextEditRight(task)) { editType.append(",0"); } else { editType.append(",1"); } // 是否显示痕迹 if (workflowRightsManager.officialTextViewTrace(task)) { editType.append(",1"); } else { editType.append(",0"); } // 是否保留痕迹 if (workflowRightsManager.officialTextRetainTrace(task)) { editType.append(",1"); } else { editType.append(",0"); } editType.append(",0,0,1,1"); document.setEditType(editType.toString()); boolean downloadSetting = workflowRightsManager.officialTextDownloadRight(task); boolean printSetting = workflowRightsManager.officialTextPrintRight(task); document.setPrintSetting(printSetting); document.setDownloadSetting(downloadSetting); } }
// 新建word/excel @Action("office-createOffice") public String createOffice() throws Exception { WorkflowInstance instance = null; WorkflowTask task = null; if (id == null) { task = ApiFactory.getTaskService().getTask(taskId); instance = workflowInstanceManager.getWorkflowInstance(task.getProcessInstanceId()); document.setTaskName(task.getName()); document.setTaskMode(task.getProcessingMode()); document.setWorkflowId(instance.getProcessInstanceId()); document.setCreator(ContextUtils.getLoginName()); document.setCreatorName(ContextUtils.getUserName()); document.setCompanyId(ContextUtils.getCompanyId()); document.setEditType("-1,0,0,0,0,0,1,1"); // 允许编辑,不显示和保留痕迹,允许批注 document.setPrintSetting(true); document.setDownloadSetting(true); if (document.getFileType().equalsIgnoreCase("pdf")) { return "office-pdf"; } else { String template = DefinitionXmlParse.getOfficialTextTemplate( instance.getProcessDefinitionId(), task.getName()); if (StringUtils.isNotEmpty(template)) document.setTemplateId(Long.valueOf(StringUtils.substringBetween(template, "[", "]"))); setOfficeRight(document, instance, task); return "office-view"; } } else { if (taskId == null) { instance = workflowInstanceManager.getWorkflowInstance(document.getWorkflowId()); task = ApiFactory.getTaskService().getTask(instance.getFirstTaskId()); } else { task = ApiFactory.getTaskService().getTask(taskId); instance = workflowInstanceManager.getWorkflowInstance(task.getProcessInstanceId()); } setOfficeRight(document, instance, task); if (document.getFileType().equalsIgnoreCase("pdf")) { return "office-pdf"; } else { return "office-view"; } } }