package com.oa.action;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import javax.annotation.Resource;
import javax.persistence.Entity;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.io.FileUtils;
import org.apache.struts2.ServletActionContext;
import org.junit.runner.Request;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.oa.listenner.Persistence;
import com.oa.model.ApproveHistory;
import com.oa.model.Document;
import com.oa.model.DocumentProperty;
import com.oa.model.Users;
import com.oa.model.WorkFlow;
import com.oa.service.ApproveHistoryService;
import com.oa.service.DocumentService;
import com.oa.service.WorkFlowService;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
public class DocumentAction extends ActionSupport {
private DocumentService documentService;
private WorkFlowService workFlowService;
private ApproveHistoryService approveHistoryService;
private Document document;
private Logger logger = LoggerFactory.getLogger(DocumentAction.class);
/*
* private File uploadFiles; private String uploadFilesContentType; private
* String uploadFilesFileName;
*/
private List<File> uploadFiles;
private List<String> uploadFilesContentType;
private List<String> uploadFilesFileName;
private List<File> currentFileName = new ArrayList<File>();
private List<DocumentProperty> props;
private int index;
private Integer workflowId;
private String transition;
private String returns;
// private Map props = new HashMap();
// approveHistory
private String idea;
private int back;
public String approve() {
Users users = (Users) ServletActionContext.getRequest().getSession().getAttribute("admin");
ApproveHistory history = new ApproveHistory();
history.setComments(idea);
history.setApproveTime(new Date());
approveHistoryService.addApproveHistory(history, document.getId(), users.getId(), (back == 1 ? true : false));
returns = "DocumentAction!ApprovingDocumentList";
return "operator_success";
}
public String finishDocument() {
HttpServletRequest request = ServletActionContext.getRequest();
Users user = (Users) request.getSession().getAttribute("admin");
int userId = user.getId();
System.out.println(user.toString());
List<Document> documents = documentService.serachPageFinishDocuments((index == 0 ? 1 : index), userId);
request.setAttribute("currentIndex", (index == 0 ? 1 : index));
request.setAttribute("myDocumentList", documents);
int totals = documentService.serachAllFinishDocuments(userId).size();
request.setAttribute("totalSize", totals);
request.setAttribute("url", "DocumentAction!finishDocument");
request.setAttribute("type", "finishDocument");
return "finishDocumentList";
}
/**
*
* no problem
*
* @return
*/
public String listMyDocument() {
HttpServletRequest request = ServletActionContext.getRequest();
Users user = (Users) request.getSession().getAttribute("admin");
System.out.println(user.toString());
List<Document> documents = documentService.searchMyDocumentsPage((index == 0 ? 1 : index), user.getId());
request.setAttribute("currentIndex", (index == 0 ? 1 : index));
request.setAttribute("myDocumentList", documents);
int totals = documentService.searchAllMyDocument(user.getId()).size();
request.setAttribute("totalSize", totals);
request.setAttribute("url", "DocumentAction!listMyDocument");
request.setAttribute("type", "document");
return "documentList";
}
/**
*
* @return
*/
public String ApprovingDocumentList() {
HttpServletRequest request = ServletActionContext.getRequest();
Users user = (Users) request.getSession().getAttribute("admin");
String username = user.getAccount();
List<Document> documents = documentService.searchPageApprovingDocuments(username, (index == 0 ? 1 : index));
request.setAttribute("currentIndex", (index == 0 ? 1 : index));
request.setAttribute("myDocumentList", documents);
System.out.println(username + " ========= zy");
List temp = documentService.SearchAllApprovingDocuments(username);
int totals = (temp == null ? 0 : temp.size());
request.setAttribute("totalSize", totals);
request.setAttribute("url", "DocumentAction!ApprovingDocumentList");
request.setAttribute("type", "approvingDocument");
return "documentList";
}
/**
* no problem
*
* @return
*/
public String approveHistoryList() {
HttpServletRequest request = ServletActionContext.getRequest();
Users user = (Users) request.getSession().getAttribute("admin");
List<ApproveHistory> documents = approveHistoryService.searchPageApproveHistory((index == 0 ? 1 : index), document.getId());
request.setAttribute("currentIndex", (index == 0 ? 1 : index));
request.setAttribute("approveHistoryList", documents);
int totals = approveHistoryService.searchAllApproveHistory(document.getId()).size();
request.setAttribute("totalSize", totals);
request.setAttribute("url", "DocumentAction!approveHistoryList");
request.setAttribute("type", "approveHistory");
request.setAttribute("documentId", document.getId());
return "approveHistoryList";
}
/***
*
* no problem
*
* @return
*/
public String ApprovedDocumentList() {
HttpServletRequest request = ServletActionContext.getRequest();
Users user = (Users) request.getSession().getAttribute("admin");
List<Document> documents = documentService.searchPageApprovedDocuments(user.getId(), index);
request.setAttribute("currentIndex", (index == 0 ? 1 : index));
request.setAttribute("myDocumentList", documents);
int totals = documentService.searchAllApprovedDocuments(user.getId()).size();
request.setAttribute("totalSize", totals);
request.setAttribute("url", "DocumentAction!ApprovedDocumentList");
request.setAttribute("type", "approvedDocument");
return "documentList";
}
public String addDocument() throws IOException {
System.out.println("DocumentAction ===-- ");
HttpServletRequest request = ServletActionContext.getRequest();
Users users = (Users) ServletActionContext.getRequest().getSession().getAttribute("admin");
if (addtoServer()) {
System.out.println(" upload file success");
show();
System.out.println("===========================");
// System.out.println(props.toString());
/*
* for(DocumentProperty property : props){
* System.err.println(property.toString()+""); }
*/
System.out.println(" workflow " + workflowId);
documentService.addDocument(document, workflowId, users.getId(), props);
}
returns = "DocumentAction!listMyDocument";
return "operator_success";
}
public void show() {
// System.out.println(props.size());
int i = 0;
if (props == null) {
return;
}
for (DocumentProperty property : props) {
if (property.getJava_io_File() != null) {
property.setJava_io_File(currentFileName.get(0).getAbsolutePath());
props.set(i, property);
currentFileName.remove(0);
} else if (property.isNull()) {
props.set(i, null);
}
System.out.println(property.toString());
i++;
}
}
public String deleteDocument() {
HttpServletRequest request = ServletActionContext.getRequest();
String ids[] = request.getParameterValues("delid");
Document docs = null;
String key;
for (String a : ids) {
docs = documentService.findDocument(Integer.valueOf(a));
if (docs.getTypePersist() != null) {
key = docs.getTypePersist().replaceAll("(.*)\\|.*", "$1");
Persistence.removeVariable(key);
}
}
returns = "DocumentAction!listMyDocument";
documentService.deleteDocuments(ids);
return null;
}
public String submitView() {
Users users = (Users) ServletActionContext.getRequest().getSession().getAttribute("admin");
List nextTransation = documentService.searchNextStep(document.getId(), users.getAccount());
Document docs = documentService.findDocument(document.getId());
// logger.info(Persistence.variables.size() + "");
String docType = docs.getTypePersist();
if (docType != null) {
String[] key = docType.split("\\|");
ServletActionContext.getRequest().setAttribute("url", docs.getUrl());
ServletActionContext.getRequest().setAttribute("key", docType);
ServletActionContext.getRequest().setAttribute(key[1], Persistence.getVariable(key[0]));
logger.info(key[1] + "-------" + Persistence.getVariable(key[0]));
logger.info("url----" + docs.getUrl());
}
ServletActionContext.getRequest().setAttribute("workflowId", docs.getWorkFlow().getId());
ServletActionContext.getRequest().setAttribute("isProperNull", docs.getProps().size());
ServletActionContext.getRequest().setAttribute("transitionList", nextTransation);
ServletActionContext.getRequest().setAttribute("id", document.getId());
return "submitToNextOne";
}
/**
* no problem
*
* @returnLllsdfsd55
*/
public String submit() {
Users users = (Users) ServletActionContext.getRequest().getSession().getAttribute("admin");
documentService.submitToWorkFlow(users.getId(), document.getId(), transition);
returns = "DocumentAction!listMyDocument";
return "operator_success";
}
private boolean addtoServer() throws IOException {
for (int i = 0; i < uploadFiles.size(); i++) {
if (uploadFiles.get(i).length() != 0) {
String upload = ServletActionContext.getServletContext().getRealPath("/upload");
String filename = uploadFilesFileName.get(i);
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMddhhmmss");
String temp = filename.substring(0, filename.lastIndexOf("."));
String temp2 = filename.substring(filename.lastIndexOf("."));
String filepath = temp + simpleDateFormat.format(new Date()) + temp2;
File savefile = new File(upload, filepath);
System.out.println(savefile.toString());
currentFileName.add(savefile);
if (i == 0) {
document.setDoc(savefile.getAbsolutePath());
currentFileName.remove(0);
}
if (!savefile.getParentFile().exists())
savefile.getParentFile().mkdirs();
FileUtils.copyFile(uploadFiles.get(i), savefile);
} else {
return false;
}
}
return true;
}
public String download() {
DownLoad(document.getDoc());
return null;
}
public void DownLoad(String path) {
try {
FileInputStream inputStream = new FileInputStream(new File(path));
HttpServletResponse response = ServletActionContext.getResponse();
response.reset();
response.setContentType("application/x-download;charset=GBK");
response.setHeader("Content-Disposition", "attachment;filename=temp.doc");
OutputStream outputStream = response.getOutputStream();
byte[] buffer = new byte[inputStream.available()];
inputStream.read(buffer);
outputStream.write(buffer);
inputStream.close();
outputStream.flush();
outputStream.close();
} catch (Exception e) {
e.printStackTrace();
}
}
public String toAddDocumentView() {
System.out.println("sfasf");
List<WorkFlow> workFlows = workFlowService.getAllWorkFlows("");
System.out.println(workFlows.size());
ServletActionContext.getRequest().setAttribute("workFlows", workFlows);
return "toAddDocumentView";
}
public DocumentService getDocumentService() {
return documentService;
}
@Resource
public void setDocumentService(DocumentService documentService) {
this.documentService = documentService;
}
public WorkFlowService getWorkFlowService() {
return workFlowService;
}
@Resource
public void setWorkFlowService(WorkFlowService workFlowService) {
this.workFlowService = workFlowService;
}
public int getIndex() {
return index;
}
public void setIndex(int index) {
this.index = index;
}
public Document getDocument() {
return document;
}
public void setDocument(Document document) {
System.out.println(" set document ");
this.document = document;
}
public Integer getWorkflowId() {
return workflowId;
}
public void setWorkflowId(Integer workflowId) {
this.workflowId = workflowId;
}
public String getReturns() {
return returns;
}
public void setReturns(String returns) {
this.returns = returns;
}
/*
* public File getUploadFiles() { return uploadFiles; }
*
* public void setUploadFiles(File uploadFiles) { this.uploadFiles =
* uploadFiles; }
*
* public String getUploadFilesContentType() { return
* uploadFilesContentType; }
*
* public void setUploadFilesContentType(String uploadFilesContentType) {
* this.uploadFilesContentType = uploadFilesContentType; }
*
* public String getUploadFilesFileName() { return uploadFilesFileName; }
*
* public void setUploadFilesFileName(String uploadFilesFileName) {
* this.uploadFilesFileName = uploadFilesFileName; }
*/
public ApproveHistoryService getApproveHistoryService() {
return approveHistoryService;
}
@Resource
public void setApproveHistoryService(ApproveHistoryService approveHistoryService) {
this.approveHistoryService = approveHistoryService;
}
public String getTransition() {
return transition;
}
public void setTransition(String transition) {
this.transition = transition;
}
public String getIdea() {
return idea;
}
public void setIdea(String idea) {
this.idea = idea;
}
public int getBack() {
return back;
}
public void setBack(int back) {
this.back = back;
}
public List<File> getUploadFiles() {
return uploadFiles;
}
public void setUploadFiles(List<File> uploadFiles) {
this.uploadFiles = uploadFiles;
}
public List<String> getUploadFilesContentType() {
return uploadFilesContentType;
}
public void setUploadFilesContentType(List<String> uploadFilesContentType) {
this.uploadFilesContentType = uploadFilesContentType;
}
public List<String> getUploadFilesFileName() {
return uploadFilesFileName;
}
public void setUploadFilesFileName(List<String> uploadFilesFileName) {
this.uploadFilesFileName = uploadFilesFileName;
}
public List<DocumentProperty> getProps() {
return props;
}
public void setProps(List<DocumentProperty> props) {
System.out.println(props.toString());
System.out.println("set list <documentProperty ");
this.props = props;
for (DocumentProperty property : props) {
System.err.println(property.toString() + "");
}
}
}