package com.norteksoft.wf.engine.web; import java.io.BufferedInputStream; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.util.Date; import java.util.List; import javax.servlet.http.HttpServletRequest; import org.apache.commons.lang.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.struts2.ServletActionContext; import org.apache.struts2.convention.annotation.Namespace; import org.apache.struts2.convention.annotation.ParentPackage; import org.apache.struts2.convention.annotation.Result; import org.apache.struts2.convention.annotation.Results; import org.apache.struts2.dispatcher.multipart.MultiPartRequestWrapper; import org.springframework.beans.factory.annotation.Autowired; import com.norteksoft.product.api.ApiFactory; import com.norteksoft.product.orm.Page; import com.norteksoft.product.util.ContextUtils; import com.norteksoft.product.util.PageUtils; import com.norteksoft.product.web.struts2.CrudActionSupport; import com.norteksoft.wf.engine.entity.DocumentTemplate; import com.norteksoft.wf.engine.entity.DocumentTemplateFile; import com.norteksoft.wf.engine.entity.WorkflowType; import com.norteksoft.wf.engine.service.DocumentTemplateFileManager; import com.norteksoft.wf.engine.service.WorkflowTypeManager; @Namespace("/engine") @ParentPackage("default") @Results( { @Result(name = CrudActionSupport.RELOAD, location = "office-template", type = "redirectAction") }) public class OfficeTemplateAction extends CrudActionSupport<DocumentTemplate> { private static final long serialVersionUID = 1L; private Log log=LogFactory.getLog(CrudActionSupport.class); private Page<DocumentTemplate> page = new Page<DocumentTemplate>(0,true); private Long id; private Long typeId = 0l; private DocumentTemplateFile documentTemplateFile; private DocumentTemplate documentTemplate; private List<WorkflowType> typeList ; private List<Long> templateIds; private String backTypeId; @Autowired private DocumentTemplateFileManager documentTemplateFileManager; @Autowired private WorkflowTypeManager workflowTypeManager; @Override public String delete() throws Exception { documentTemplateFileManager.deleteTemplateByIds(templateIds); ApiFactory.getBussinessLogService().log("正文模板", "删除正文模板", ContextUtils.getSystemId("wf")); this.addActionMessage("已删除"); return list(); } @Override public String input() throws Exception { typeList = workflowTypeManager.getAllWorkflowType(); typeId = documentTemplate.getTypeId(); ApiFactory.getBussinessLogService().log("正文模板", "正文模板表单页面", ContextUtils.getSystemId("wf")); return "input"; } @Override public String list() throws Exception { if(page.getPageSize()>1){ if(typeId==null||typeId==0){ documentTemplateFileManager.getTemplate(page); }else{ documentTemplateFileManager.getTemplate(page,typeId); } ApiFactory.getBussinessLogService().log("正文模板", "正文模板列表", ContextUtils.getSystemId("wf")); this.renderText(PageUtils.pageToJson(page)); return null; } return SUCCESS; } @Override protected void prepareModel() throws Exception { if(id==null){ documentTemplate = new DocumentTemplate(); }else{ documentTemplate = documentTemplateFileManager.getDocumentTemplate(id); } } @Override public String save() throws Exception { documentTemplate.setCompanyId(ContextUtils.getCompanyId()); documentTemplate.setSystemId(ContextUtils.getSystemId()); documentTemplateFileManager.saveTemplate(documentTemplate); ApiFactory.getBussinessLogService().log("正文模板", "保存正文模板", ContextUtils.getSystemId("wf")); this.addActionMessage(getText("template.save.success")); return input(); } /** * 上传模板 * @return * @throws Exception */ public String upload() throws Exception{ log.debug(" *** into upload method *** "); //从request中获取参数并封装实体 HttpServletRequest request = ServletActionContext.getRequest(); MultiPartRequestWrapper wrapper = (MultiPartRequestWrapper) request; File file = wrapper.getFiles("Filedata")[0]; String fileName = request.getParameter("Filename"); String templateId = request.getParameter("templateId"); if(StringUtils.isNotEmpty(templateId)) id = Long.valueOf(templateId); documentTemplate = documentTemplateFileManager.getDocumentTemplate(id); documentTemplate.setFileName(fileName); Long currentTime = System.currentTimeMillis(); documentTemplate.setCreatedTime(new Date()); documentTemplate.setFileType(StringUtils.substring(fileName, fileName.lastIndexOf('.'))); documentTemplate.setRecordId(currentTime); BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file)); documentTemplate.setFileSize(new Integer(bis.available())/1024); byte[] content=null; try { content = new byte[bis.available()]; bis.read(content); } catch (IOException e) { e.printStackTrace(); }finally{ bis.close(); } documentTemplateFile=documentTemplateFileManager.getDocumentTemplateFile(id); if(documentTemplateFile==null){ documentTemplateFile=new DocumentTemplateFile(); } documentTemplateFile.setTemplateId(id); documentTemplateFile.setFileBody(content); // documentTemplateFileManager.saveTemplate(documentTemplate); documentTemplateFileManager.saveTemplateFile(documentTemplateFile,documentTemplate); ApiFactory.getBussinessLogService().log("正文模板", "上传正文模板", ContextUtils.getSystemId("wf")); return null; } public DocumentTemplate getModel() { return documentTemplate; } public void setTypeId(Long typeId) { this.typeId = typeId; } public Long getId() { return id; } public void setId(Long id) { this.id = id; } public Long getTypeId() { return typeId; } public Page<DocumentTemplate> getPage() { return page; } public void setPage(Page<DocumentTemplate> page) { this.page = page; } public List<WorkflowType> getTypeList() { return typeList; } public void setTemplateIds(List<Long> templateIds) { this.templateIds = templateIds; } public String getBackTypeId() { return backTypeId; } public void setBackTypeId(String backTypeId) { this.backTypeId = backTypeId; } }