Package org.jeecgframework.web.cgform.controller.cgformftl

Source Code of org.jeecgframework.web.cgform.controller.cgformftl.CgformFtlController

package org.jeecgframework.web.cgform.controller.cgformftl;

import java.io.File;
import java.util.HashMap;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.jeecgframework.web.cgform.common.OfficeHtmlUtil;
import org.jeecgframework.web.cgform.entity.cgformftl.CgformFtlEntity;
import org.jeecgframework.web.cgform.service.cgformftl.CgformFtlServiceI;
import org.jeecgframework.web.cgform.service.config.CgFormFieldServiceI;
import org.jeecgframework.web.system.service.SystemService;

import org.apache.log4j.Logger;
import org.jeecgframework.core.common.controller.BaseController;
import org.jeecgframework.core.common.hibernate.qbc.CriteriaQuery;
import org.jeecgframework.core.common.model.common.UploadFile;
import org.jeecgframework.core.common.model.json.AjaxJson;
import org.jeecgframework.core.common.model.json.DataGrid;
import org.jeecgframework.core.constant.Globals;
import org.jeecgframework.core.util.DataUtils;
import org.jeecgframework.core.util.FileUtils;
import org.jeecgframework.core.util.LogUtil;
import org.jeecgframework.core.util.MyBeanUtils;
import org.jeecgframework.core.util.ResourceUtil;
import org.jeecgframework.core.util.StringUtil;
import org.jeecgframework.core.util.oConvertUtils;
import org.jeecgframework.tag.core.easyui.TagUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.util.FileCopyUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import org.springframework.web.servlet.ModelAndView;

/**
* @Title: Controller
* @Description: 上传Word转换为freemarker表单
* @author 段其录
* @date 2013-07-03 17:42:05
* @version V1.0
*
*/
@Controller
@RequestMapping("/cgformFtlController")
public class CgformFtlController extends BaseController {
  /**
   * Logger for this class
   */
  private static final Logger logger = Logger
      .getLogger(CgformFtlController.class);

  @Autowired
  private CgformFtlServiceI cgformFtlService;
  @Autowired
  private SystemService systemService;
  @Autowired
  private CgFormFieldServiceI cgFormFieldService;

  private String message;

  public String getMessage() {
    return message;
  }

  public void setMessage(String message) {
    this.message = message;
  }

  /**
   * 模板展示
   *
   * @author 安超
   * @return
   */
  @RequestMapping(params = "formEkeditor")
  public ModelAndView ckeditor(HttpServletRequest request, String id) {
    CgformFtlEntity t = systemService.get(CgformFtlEntity.class, id);
    request.setAttribute("cgformFtlEntity", t);
    if (t.getFtlContent() == null) {
      request.setAttribute("contents", "");
    } else {
      request.setAttribute("contents", new String(t.getFtlContent()));
    }
    return new ModelAndView("jeecg/cgform/cgformftl/ckeditor");
  }

  /**
   * 模板编辑保存
   *
   * @author 安超
   * @return
   */
  @RequestMapping(params = "saveFormEkeditor")
  @ResponseBody
  public AjaxJson saveCkeditor(HttpServletRequest request,
      CgformFtlEntity cgformFtlEntity, String contents) {
    AjaxJson j = new AjaxJson();
    if (StringUtil.isNotEmpty(cgformFtlEntity.getId())) {
      CgformFtlEntity t = systemService.get(CgformFtlEntity.class,
          cgformFtlEntity.getId());
      try {
        MyBeanUtils.copyBeanNotNull2Bean(cgformFtlEntity, t);
        t.setFtlContent(contents);
        systemService.saveOrUpdate(t);
        j.setSuccess(true);
        j.setMsg("更新成功");
      } catch (Exception e) {
        e.printStackTrace();
        j.setSuccess(false);
        j.setMsg("更新失败");
      }
    }
    return j;
  }

  /**
   * Word转Ftl列表 页面跳转
   *
   * @return
   */
  @RequestMapping(params = "cgformFtl")
  public ModelAndView cgformFtl(HttpServletRequest request) {
    String formid = request.getParameter("formid");
    request.setAttribute("formid", formid);
    return new ModelAndView("jeecg/cgform/cgformftl/cgformFtlList");
  }

  /**
   * easyui AJAX请求数据
   *
   * @param request
   * @param response
   * @param dataGrid
   * @param user
   */

  @SuppressWarnings("unchecked")
  @RequestMapping(params = "datagrid")
  public void datagrid(CgformFtlEntity cgformFtl, HttpServletRequest request,
      HttpServletResponse response, DataGrid dataGrid) {
    CriteriaQuery cq = new CriteriaQuery(CgformFtlEntity.class, dataGrid);
    // 查询条件组装器
    org.jeecgframework.core.extend.hqlsearch.HqlGenerateUtil.installHql(cq,
        cgformFtl, request.getParameterMap());
    this.cgformFtlService.getDataGridReturn(cq, true);
    TagUtil.datagrid(response, dataGrid);
  }

  /**
   * 删除Word转Ftl
   *
   * @return
   */
  @RequestMapping(params = "del")
  @ResponseBody
  public AjaxJson del(CgformFtlEntity cgformFtl, HttpServletRequest request) {
    AjaxJson j = new AjaxJson();
    cgformFtl = systemService.getEntity(CgformFtlEntity.class,
        cgformFtl.getId());
    message = "删除成功";
    cgformFtlService.delete(cgformFtl);
    systemService.addLog(message, Globals.Log_Type_DEL,
        Globals.Log_Leavel_INFO);

    j.setMsg(message);
    return j;
  }

  /**
   * 激活Ftl
   *
   * @return
   */
  @RequestMapping(params = "active")
  @ResponseBody
  public AjaxJson active(CgformFtlEntity cgformFtl, HttpServletRequest request) {
    AjaxJson j = new AjaxJson();
    try {
      // 判断有没有激活过的模板
      cgformFtl = systemService.getEntity(CgformFtlEntity.class,
          cgformFtl.getId());
      if (!cgformFtlService.hasActive(cgformFtl.getCgformId())) {
        cgformFtl.setFtlStatus("1");
        cgformFtlService.saveOrUpdate(cgformFtl);
        message = "激活成功";
        systemService.addLog(message, Globals.Log_Type_UPDATE,
            Globals.Log_Leavel_INFO);
        j.setSuccess(true);
        j.setMsg(message);
      } else {
        message = "已有激活模板,请取消后再进行激活";
        j.setSuccess(true);
        j.setMsg(message);
      }
    } catch (Exception e) {
      logger.info(e.getMessage());
      message = "激活失败";
      j.setSuccess(false);
      j.setMsg(message);
    }
    return j;
  }

  /**
   * 取消激活Ftl
   *
   * @return
   */
  @RequestMapping(params = "cancleActive")
  @ResponseBody
  public AjaxJson cancleActive(CgformFtlEntity cgformFtl,
      HttpServletRequest request) {
    AjaxJson j = new AjaxJson();
    try {
      cgformFtl = systemService.getEntity(CgformFtlEntity.class,
          cgformFtl.getId());
      cgformFtl.setFtlStatus("0");
      cgformFtlService.saveOrUpdate(cgformFtl);
      message = "取消激活成功";
      systemService.addLog(message, Globals.Log_Type_UPDATE,
          Globals.Log_Leavel_INFO);
      j.setSuccess(true);
      j.setMsg(message);
    } catch (Exception e) {
      logger.info(e.getMessage());
      message = "取消激活失败";
      j.setSuccess(false);
      j.setMsg(message);
    }
    return j;
  }

  /**
   * 添加Word转Ftl
   *
   * @param ids
   * @return
   */
  @RequestMapping(params = "save")
  @ResponseBody
  public AjaxJson save(CgformFtlEntity cgformFtl, HttpServletRequest request) {
    AjaxJson j = new AjaxJson();
    if (StringUtil.isNotEmpty(cgformFtl.getId())) {
      message = "更新成功";
      CgformFtlEntity t = cgformFtlService.get(CgformFtlEntity.class,
          cgformFtl.getId());
      try {
        MyBeanUtils.copyBeanNotNull2Bean(cgformFtl, t);
        cgformFtlService.saveOrUpdate(t);
        systemService.addLog(message, Globals.Log_Type_UPDATE,
            Globals.Log_Leavel_INFO);
      } catch (Exception e) {
        e.printStackTrace();
      }
    } else {
      message = "添加成功";
      cgformFtlService.save(cgformFtl);
      systemService.addLog(message, Globals.Log_Type_INSERT,
          Globals.Log_Leavel_INFO);
    }

    return j;
  }

  /**
   * Word转Ftl列表页面跳转
   *
   * @return
   */
  @RequestMapping(params = "addorupdate")
  public ModelAndView addorupdate(CgformFtlEntity cgformFtl,
      HttpServletRequest req) {
    if (StringUtil.isNotEmpty(cgformFtl.getId())) {
      cgformFtl = cgformFtlService.getEntity(CgformFtlEntity.class,
          cgformFtl.getId());
    }
    req.setAttribute("cgformFtlPage", cgformFtl);
    return new ModelAndView("jeecg/cgform/cgformftl/cgformFtl");
  }

  /**
   * 保存转换表单文件
   *
   * @param ids
   * @return
   * @throws Exception
   */
  @RequestMapping(params = "saveWordFiles", method = RequestMethod.POST)
  @ResponseBody
  public AjaxJson saveWordFiles(HttpServletRequest request,
      HttpServletResponse response, CgformFtlEntity cgformFtl) {
    AjaxJson j = new AjaxJson();
    Map<String, Object> attributes = new HashMap<String, Object>();

    LogUtil.info("-------------------------step.1-------------------------------------");
    String fileKey = oConvertUtils.getString(request.getParameter("id"));// 文件ID
    String cgformId = oConvertUtils.getString(request
        .getParameter("cgformId"));// formid
    String cgformName = oConvertUtils.getString(request
        .getParameter("cgformName"));// formname
    String ftlStatus = oConvertUtils.getString(request
        .getParameter("ftlStatus"));// formStatus
    if (oConvertUtils.isEmpty(ftlStatus)) {
      ftlStatus = "0";
    }

    if (StringUtil.isNotEmpty(fileKey)) {
      cgformFtl.setId(fileKey);
      cgformFtl = systemService.getEntity(CgformFtlEntity.class, fileKey);
    } else {
      cgformFtl.setFtlVersion(cgformFtlService.getNextVarsion(cgformId));
    }
    LogUtil.info("-------------------------step.2-------------------------------------");
    cgformFtl.setCgformId(cgformId);
    cgformFtl.setCgformName(cgformName);
    cgformFtl.setFtlStatus(ftlStatus);

    UploadFile uploadFile = new UploadFile(request, cgformFtl);
    uploadFile.setCusPath("forms");
    message = null;
    try {

      uploadFile.getMultipartRequest().setCharacterEncoding("UTF-8");
      MultipartHttpServletRequest multipartRequest = uploadFile
          .getMultipartRequest();

      String uploadbasepath = uploadFile.getBasePath();// 文件上传根目录
      if (uploadbasepath == null) {
        uploadbasepath = ResourceUtil.getConfigByName("uploadpath");
      }
      Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
      // 文件数据库保存路径
      String path = uploadbasepath + "\\";// 文件保存在硬盘的相对路径
      String realPath = uploadFile.getMultipartRequest().getSession()
          .getServletContext().getRealPath("\\")
          + path;// 文件的硬盘真实路径
      File file = new File(realPath);
      if (!file.exists()) {
        file.mkdir();// 创建根目录
      }
      if (uploadFile.getCusPath() != null) {
        realPath += uploadFile.getCusPath() + "\\";
        path += uploadFile.getCusPath() + "\\";
        file = new File(realPath);
        if (!file.exists()) {
          file.mkdir();// 创建文件自定义子目录
        }
      } else {
        realPath += DataUtils.getDataString(DataUtils.yyyyMMdd) + "\\";
        path += DataUtils.getDataString(DataUtils.yyyyMMdd) + "\\";
        file = new File(realPath);
        if (!file.exists()) {
          file.mkdir();// 创建文件时间子目录
        }
      }
      LogUtil.info("-------------------------step.3-------------------------------------");
      String fileName = "";
      for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) {
        MultipartFile mf = entity.getValue();// 获取上传文件对象
        fileName = mf.getOriginalFilename();// 获取文件名
        String extend = FileUtils.getExtend(fileName);// 获取文件扩展名
        String myfilename = "";
        String myhtmlfilename = "";
        String noextfilename = "";// 不带扩展名
        if (uploadFile.isRename()) {

          noextfilename = DataUtils
              .getDataString(DataUtils.yyyymmddhhmmss)
              + StringUtil.random(8);// 自定义文件名称
          myfilename = noextfilename + "." + extend;// 自定义文件名称
        } else {
          myfilename = fileName;
        }

        String savePath = realPath + myfilename;// 文件保存全路径
        cgformFtl.setFtlWordUrl(fileName);
        File savefile = new File(savePath);
        FileCopyUtils.copy(mf.getBytes(), savefile);

        myhtmlfilename = realPath + noextfilename + ".html";
        String myftlfilename = realPath + noextfilename + ".ftl";
        LogUtil.info("-------------------------step.4-------------------------------------");
        // 开始转换表单文件
        OfficeHtmlUtil officeHtml = new OfficeHtmlUtil();

        // 方式一:jacob.jar方式word转html
        officeHtml.wordToHtml(savePath, myhtmlfilename);
        String htmlStr = officeHtml.getInfo(myhtmlfilename);
        htmlStr = officeHtml.doHtml(htmlStr);

        // 方式二:poi方式word转html
        // officeHtml.WordConverterHtml(savePath, myhtmlfilename);
        // String htmlStr = officeHtml.getInfo(myhtmlfilename);
        // htmlStr = officeHtml.doPoiHtml(htmlStr);

        officeHtml.stringToFile(htmlStr, myftlfilename);
        // js plugin start
        StringBuilder script = new StringBuilder("");
        script.append("<script type=\"text/javascript\">");
        script.append("${js_plug_in?if_exists}");
        script.append("</script>");
        htmlStr = htmlStr.replace("</html>", script.toString()
            + "</html>");
        // js plugin end
        cgformFtl.setFtlContent(htmlStr);
        cgformFtlService.saveOrUpdate(cgformFtl);
        LogUtil.info("-------------------------step.5-------------------------------------");
      }
    } catch (Exception e1) {
      LogUtil.error(e1.toString());
      message = e1.toString();
    }

    attributes.put("id", cgformFtl.getId());
    if (StringUtil.isNotEmpty(message))
      j.setMsg("Word转Ftl失败," + message);
    else
      j.setMsg("Word转Ftl成功");
    j.setAttributes(attributes);

    return j;
  }
  // for:放弃jacob和poi上传word,改用ckeditor
  @RequestMapping(params = "cgformFtl2")
  public ModelAndView cgformFtl2(HttpServletRequest request) {
    String formid = request.getParameter("formid");
    request.setAttribute("formid", formid);
    return new ModelAndView("jeecg/cgform/cgformftl/cgformFtlList2");
  }

  @RequestMapping(params = "addorupdate2")
  public ModelAndView addorupdate2(CgformFtlEntity cgformFtl,
      HttpServletRequest req) {
    if (StringUtil.isNotEmpty(cgformFtl.getId())) {
      cgformFtl = cgformFtlService.getEntity(CgformFtlEntity.class,
          cgformFtl.getId());
    }
    StringBuffer sb = new StringBuffer();
    sb.append("<html xmlns:m=\"http://schemas.microsoft.com/office/2004/12/omml\"><head><title></title>");
    sb.append("<link href=\"plug-in/easyui/themes/default/easyui.css\" id=\"easyuiTheme\" rel=\"stylesheet\" type=\"text/css\" />");
    sb.append("<link href=\"plug-in/easyui/themes/icon.css\" rel=\"stylesheet\" type=\"text/css\" />");
    sb.append("<link href=\"plug-in/accordion/css/accordion.css\" rel=\"stylesheet\" type=\"text/css\" />");
    sb.append("<link href=\"plug-in/Validform/css/style.css\" rel=\"stylesheet\" type=\"text/css\" />");
    sb.append("<link href=\"plug-in/Validform/css/tablefrom.css\" rel=\"stylesheet\" type=\"text/css\" />");
    sb.append("<style type=\"text/css\">body{font-size:12px;}table{border: 1px solid #000000;padding:0; ");
    sb.append("margin:0 auto;border-collapse: collapse;width:100%;align:right;}td {border: 1px solid ");
    sb.append("#000000;background: #fff;font-size:12px;padding: 3px 3px 3px 8px;color: #000000;word-break: keep-all;}");
    sb.append("</style></head><script type=\"text/javascript\" src=\"plug-in/jquery/jquery-1.8.3.js\">");
    sb.append("</script><script type=\"text/javascript\" src=\"plug-in/tools/dataformat.js\"></script>");
    sb.append("<script type=\"text/javascript\" src=\"plug-in/easyui/jquery.easyui.min.1.3.2.js\"></script>");
    sb.append("<script type=\"text/javascript\" src=\"plug-in/easyui/locale/easyui-lang-zh_CN.js\"></script>");
    sb.append("<script type=\"text/javascript\" src=\"plug-in/tools/syUtil.js\"></script><script ");
    sb.append("type=\"text/javascript\" src=\"plug-in/My97DatePicker/WdatePicker.js\"></script><script ");
    sb.append("type=\"text/javascript\" src=\"plug-in/lhgDialog/lhgdialog.min.js\"></script><script ");
    sb.append("type=\"text/javascript\" src=\"plug-in/tools/curdtools.js\"></script><script type=\"text/javascript\" ");
    sb.append("src=\"plug-in/tools/easyuiextend.js\"></script><script type=\"text/javascript\" ");
    sb.append("src=\"plug-in/Validform/js/Validform_v5.3.1_min.js\"></script><script type=\"text/javascript\" ");
    sb.append("src=\"plug-in/Validform/js/Validform_Datatype.js\"></script><script type=\"text/javascript\" ");
    sb.append("src=\"plug-in/Validform/js/datatype.js\"></script><script type=\"text/javascript\" ");
    sb.append("src=\"plug-in/Validform/plugin/passwordStrength/passwordStrength-min.js\"></script>");
    sb.append("<script type=\"text/javascript\">$(function(){$(\"#formobj\").Validform({tiptype:4,");
    sb.append("btnSubmit:\"#btn_sub\",btnReset:\"#btn_reset\",ajaxPost:true,usePlugin:{passwordstrength:");
    sb.append("{minLen:6,maxLen:18,trigger:function(obj,error){if(error){obj.parent().next().");
    sb.append("find(\".Validform_checktip\").show();obj.find(\".passwordStrength\").hide();}");
    sb.append("else{$(\".passwordStrength\").show();obj.parent().next().find(\".Validform_checktip\")");
    sb.append(".hide();}}}},callback:function(data){var win = frameElement.api.opener;if(data.success");
    sb.append("==true){frameElement.api.close();win.tip(data.msg);}else{if(data.responseText==''||");
    sb.append("data.responseText==undefined)$(\"#formobj\").html(data.msg);else $(\"#formobj\")");
    sb.append(".html(data.responseText); return false;}win.reloadTable();}});});</script><body>");
    sb.append("</body><script type=\"text/javascript\">${js_plug_in?if_exists}</script></html>");
    req.setAttribute("cgformStr", sb);
    req.setAttribute("cgformFtlPage", cgformFtl);
    return new ModelAndView("jeecg/cgform/cgformftl/cgformFtlEditor");
  }

  @RequestMapping(params = "saveEditor")
  @ResponseBody
  public AjaxJson saveEditor(CgformFtlEntity cgformFtl,
      HttpServletRequest request) {
    AjaxJson j = new AjaxJson();
    String fileKey = oConvertUtils.getString(request.getParameter("id"));// 文件ID
    String cgformId = oConvertUtils.getString(request
        .getParameter("cgformId"));
    String cgformName = oConvertUtils.getString(request
        .getParameter("cgformName"));
    String ftlStatus = oConvertUtils.getString(request
        .getParameter("ftlStatus"));
    String ftlVersion = oConvertUtils.getString(request
        .getParameter("ftlVersion"));
    String ftlWordUrl = oConvertUtils.getString(request
        .getParameter("ftlWordUrl"));
    String createBy = oConvertUtils.getString(request
        .getParameter("createBy"));
    String createName = oConvertUtils.getString(request
        .getParameter("createName"));
    String createDate = oConvertUtils.getString(request
        .getParameter("createDate"));
    if (oConvertUtils.isEmpty(ftlStatus))
      ftlStatus = "0";

    cgformFtl.setCgformId(cgformId);
    cgformFtl.setCgformName(cgformName);
    cgformFtl.setFtlStatus(ftlStatus);
    if (StringUtil.isNotEmpty(fileKey)) {
      cgformFtl.setId(fileKey);
      if(StringUtil.isNotEmpty(ftlVersion))
        cgformFtl.setFtlVersion(Integer.valueOf(ftlVersion));
      if (StringUtil.isNotEmpty(ftlWordUrl))
        cgformFtl.setFtlWordUrl(ftlWordUrl);
      if (StringUtil.isNotEmpty(createBy))
        cgformFtl.setCreateBy(createBy);
      if (StringUtil.isNotEmpty(createName))
        cgformFtl.setCreateName(createName);
      if (StringUtil.isNotEmpty(createDate))
        cgformFtl.setCreateDate(DataUtils.str2Date(createDate, DataUtils.date_sdf));

      if (!"<form".equalsIgnoreCase(cgformFtl.getFtlContent())) {
        String ls_form = "<form action=\"cgFormBuildController.do?saveOrUpdate\" id=\"formobj\" name=\"formobj\" method=\"post\">"
            + "<input type=\"hidden\" name=\"tableName\" value=\"${tableName?if_exists?html}\" />"
            + "<input type=\"hidden\" name=\"id\" value=\"${id?if_exists?html}\" />"
            + "<input type=\"hidden\" id=\"btn_sub\" class=\"btn_sub\" />#{jform_hidden_field}<table";
        cgformFtl.setFtlContent(cgformFtl.getFtlContent().replace(
            "<table", ls_form));
        cgformFtl.setFtlContent(cgformFtl.getFtlContent().replace(
            "</table>", "</table></form>"));
      }
      cgformFtlService.saveOrUpdate(cgformFtl);
      j.setMsg("修改成功");
    } else {
      cgformFtl.setFtlVersion(cgformFtlService.getNextVarsion(cgformId));

      String ls_form = "<form action=\"cgFormBuildController.do?saveOrUpdate\" id=\"formobj\" name=\"formobj\" method=\"post\">"
          + "<input type=\"hidden\" name=\"tableName\" value=\"${tableName?if_exists?html}\" />"
          + "<input type=\"hidden\" name=\"id\" value=\"${id?if_exists?html}\" />"
          + "<input type=\"hidden\" id=\"btn_sub\" class=\"btn_sub\" />#{jform_hidden_field}<table";
      cgformFtl.setFtlContent(cgformFtl.getFtlContent().replace("<table",
          ls_form));
      cgformFtl.setFtlContent(cgformFtl.getFtlContent().replace(
          "</table>", "</table></form>"));
      cgformFtlService.save(cgformFtl);
      j.setMsg("上传成功");
    }
    Map<String, Object> attributes = new HashMap<String, Object>();
    attributes.put("id", cgformFtl.getId());
    j.setAttributes(attributes);
    return j;
  }
  // for:放弃jacob和poi上传word,改用ckeditor
}
TOP

Related Classes of org.jeecgframework.web.cgform.controller.cgformftl.CgformFtlController

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.