impexpAction.jsp 12.9 KB
<%@page language="java" contentType="text/html;charset=UTF-8"%> 
<%@page import="weaver.formmode.exttools.impexp.common.StringUtils" %>
<%@page import="weaver.formmode.exttools.impexp.exp.service.ExpDataService" %>
<%@page import="weaver.formmode.exttools.impexp.exp.service.ImpDataService"%>
<%@page import="weaver.file.FileUpload"%>
<%@page import="weaver.file.FileManage"%>
<%@page import="weaver.conn.RecordSet"%>
<%@page import="weaver.general.GCONST"%>
<%@page import="java.io.File"%>
<%@page import="weaver.hrm.HrmUserVarify"%>
<%@page import="weaver.hrm.User"%>
<%@page import="net.sf.json.JSONObject"%>
<%@page import="weaver.formmode.exttools.impexp.exp.service.ProgressStatus"%>
<%@page import="java.util.Map"%>
<%@page import="weaver.formmode.exttools.impexp.exp.service.OperateThread"%>
<%@page import="weaver.formmode.exttools.impexp.common.FileUtils"%>
<%@page import="weaver.formmode.exttools.impexp.common.XmlUtils"%>
<%@page import="org.dom4j.Element"%>
<%@page import="weaver.formmode.exttools.impexp.entity.FormDataXmlBean"%>
<%@page import="java.util.List"%>
<%@page import="weaver.formmode.exttools.impexp.log.LogRecordService"%>
<%@page import="weaver.formmode.exttools.impexp.entity.WorkFlowSetXmlBean"%>
<%@page import="java.util.HashMap"%>
<%@page import="java.util.ArrayList"%>
<%
String type = StringUtils.null2String(request.getParameter("type"));
String id = StringUtils.null2String(request.getParameter("id"));
String subCompanyId = StringUtils.null2String(request.getParameter("subCompanyId"));
User user = HrmUserVarify.getUser(request, response);
String sessionid = session.getId();
int userid = user.getUID();
String pageid = StringUtils.null2String(request.getParameter("pageid"));
JSONObject jsonObject = new JSONObject();
if("0".equals(type)){//导出
	ProgressStatus.create(sessionid,pageid,userid,0);
	int ptype = StringUtils.getIntValue(StringUtils.null2String(request.getParameter("ptype")));
	String modeids = StringUtils.null2String(request.getParameter("modeids"));
    OperateThread operateThread = new OperateThread(id,userid,sessionid,ptype,pageid,modeids);
	Thread thread = new Thread(operateThread);
	OperateThread.putThread(sessionid, pageid, operateThread);
	thread.start();
	out.print(jsonObject.toString());
	return;
}else if("1".equals(type)){//导入
	ProgressStatus.create(sessionid,pageid,userid,1);
	String isadd = StringUtils.null2String(request.getParameter("isadd"));
	String version = StringUtils.null2String(request.getParameter("version"));
	String isall = StringUtils.null2String(request.getParameter("all"));
    String impFormids = StringUtils.null2String(request.getParameter("impFormids"));
    boolean all = "1".equals(isall)?true:false;
	RecordSet rs = new RecordSet();
	FileUpload fu = new FileUpload(request,false);
	FileManage fm = new FileManage();
	String xmlfilepath="";
	int fileid = 0 ;
	fileid = StringUtils.getIntValue(fu.uploadFiles("filename"),0);
	String filename = "data.zip";
	String sql = "select * from imagefile where imagefileid = "+fileid;
	rs.executeSql(sql);
	String uploadfilepath="",isaesencrypt="",aescode="";
	if(rs.next()){
		uploadfilepath =  rs.getString("filerealpath");
		isaesencrypt = rs.getString("isaesencrypt");
		aescode = rs.getString("aescode");
	}
	String exceptionMsg ="";
	if(!uploadfilepath.equals("")){
		try{
			xmlfilepath = GCONST.getRootPath()+"formmode"+File.separatorChar+"import"+File.separatorChar+filename ;
			File oldfile = new File(xmlfilepath);
			if(oldfile.exists()){
				oldfile.delete();
			}
			if("1".equals(isaesencrypt)){
				uploadfilepath = FileUtils.aesDesEncrypt(uploadfilepath,aescode);
			}
			fm.copy(uploadfilepath,xmlfilepath);
		}catch(Exception e){
			exceptionMsg = "读取文件失败!";//读取文件失败!
			ProgressStatus.finish(sessionid,pageid);
		}
	}
	boolean add = "1".equals(isadd)?true:false;
	String workToModeSet=StringUtils.null2String(request.getSession().getAttribute("workToModeSet"));
    String modeTriggerWorkflow=StringUtils.null2String(request.getSession().getAttribute("modeTriggerWorkflow"));
	Thread thread = new Thread(new OperateThread(id,userid,xmlfilepath,fileid,sessionid,add,version,pageid,subCompanyId,all,impFormids,workToModeSet,modeTriggerWorkflow));
	thread.start();
	out.print(jsonObject.toString());
}else if("2".equals(type)){//查看导入/导出日志明细
	int logid = StringUtils.getIntValue(request.getParameter("logid"));
	String sql = "select * from mode_impexp_logdetail where logid='"+logid+"' order by id";
	RecordSet rs = new RecordSet();
	rs.executeSql(sql);
	String str = "";
	int i = 1;
	while(rs.next()){
		String message = StringUtils.null2String(rs.getString("message"));
		str += (i++)+":"+message+"\n";
	}
	out.clear();
	out.print(str);
	return;
}else if("3".equals(type)){//获取导入导出进度
	jsonObject.put("inprocess",false);
	Map<String,Object> progressStatus = ProgressStatus.get(sessionid,pageid);
	//System.out.println(progressStatus);
	if(progressStatus!=null){
		int persent = ProgressStatus.getCurrentProgressPersent(sessionid,pageid);
		int ptype = ProgressStatus.getPtype(sessionid,pageid);
		String logid = ProgressStatus.getLogid(sessionid,pageid);
		jsonObject.put("inprocess",true);
		jsonObject.put("process",persent);
		jsonObject.put("ptype",ptype);
		jsonObject.put("logid",logid);
		jsonObject.put("error",progressStatus.get("error"));
		if(progressStatus.containsKey("datatype")){
			if("app".equals(StringUtils.null2String(progressStatus.get("datatype")))){
				jsonObject.put("datatype","应用");
			}else if("mode".equals(StringUtils.null2String(progressStatus.get("datatype")))){
				jsonObject.put("datatype","模块");
			}
		}
		String fileid = StringUtils.null2String(progressStatus.get("fileid"));
		if(!"".equals(fileid)){
			jsonObject.put("fileid",fileid);
		}
		if(persent>=100){
            request.getSession().setAttribute("workToModeSet","");
            request.getSession().setAttribute("modeTriggerWorkflow","");
        }
	}
	out.print(jsonObject.toString());
}else if("4".equals(type)){
	ProgressStatus.finish(sessionid,pageid);
	request.getSession().setAttribute("workToModeSet","");
    request.getSession().setAttribute("modeTriggerWorkflow","");
	return;
} else if("5".equals(type)) {
	OperateThread.removeThread(sessionid, pageid);
	ProgressStatus.finish(sessionid,pageid);
	request.getSession().setAttribute("workToModeSet","");
    request.getSession().setAttribute("modeTriggerWorkflow","");
	return;
}else if("6".equals(type)) {
    FileUpload fu = new FileUpload(request,false);
    String xmlfilepath="";
    String filename = "data.zip";
    RecordSet rs = new RecordSet();
    FileManage fm = new FileManage();
    int fileid = 0 ;
    fileid = StringUtils.getIntValue(fu.uploadFiles("filename"),0);
    String sql = "select * from imagefile where imagefileid = "+fileid;
    rs.executeSql(sql);
    String uploadfilepath="",isaesencrypt="",aescode="";
    if(rs.next()){
        uploadfilepath =  rs.getString("filerealpath");
        isaesencrypt = rs.getString("isaesencrypt");
        aescode = rs.getString("aescode");
    }
    String exceptionMsg ="";
    if(!uploadfilepath.equals("")){
        try{
            xmlfilepath = GCONST.getRootPath()+"formmode"+File.separatorChar+"import"+File.separatorChar+filename ;
            File oldfile = new File(xmlfilepath);
            if(oldfile.exists()){
                oldfile.delete();
            }
            if("1".equals(isaesencrypt)){
                uploadfilepath = FileUtils.aesDesEncrypt(uploadfilepath,aescode);
            }
            fm.copy(uploadfilepath,xmlfilepath);
        }catch(Exception e){
            exceptionMsg = "读取文件失败!";//读取文件失败!
            ProgressStatus.finish(sessionid,pageid);
        }
    }
    xmlfilepath = GCONST.getRootPath()+"formmode"+File.separatorChar+"import"+File.separatorChar+filename ;
    String zipfolderpath = FileUtils.unZip(xmlfilepath,StringUtils.getUnquieID());
    XmlUtils xmlUtils = new XmlUtils();
    String workFlowSetXmlpath = zipfolderpath + File.separator + "workFlowSet.xml";
    Element dataRoot = xmlUtils.parseXml(workFlowSetXmlpath);
    int haveData=0;
    if(dataRoot != null){
      WorkFlowSetXmlBean workFlowSetXmlBean=new WorkFlowSetXmlBean();
      workFlowSetXmlBean.fromDocument(dataRoot);    
      Map<String, List<Map<String, String>>>  valueMap=workFlowSetXmlBean.getValueMap();
      List<Map<String, String>> list1=valueMap.get("mode_workflowtomodeset");
      List<Map<String, String>> list2=valueMap.get("mode_triggerworkflowset");
      if(list1.size()>0||list2.size()>0){
          haveData=1;
      }
    }
    jsonObject.put("haveData",haveData);
    out.print(jsonObject.toString());
}else if("7".equals(type)){
    FileUpload fu = new FileUpload(request,false);
    String xmlfilepath="";
    String filename = "data.zip";
    RecordSet rs = new RecordSet();
    FileManage fm = new FileManage();
    int fileid = 0 ;
    fileid = StringUtils.getIntValue(fu.uploadFiles("filename"),0);
    String sql = "select * from imagefile where imagefileid = "+fileid;
    rs.executeSql(sql);
    String uploadfilepath="",isaesencrypt="",aescode="";
    if(rs.next()){
        uploadfilepath =  rs.getString("filerealpath");
        isaesencrypt = rs.getString("isaesencrypt");
        aescode = rs.getString("aescode");
    }
    String exceptionMsg ="";
    if(!uploadfilepath.equals("")){
        try{
            xmlfilepath = GCONST.getRootPath()+"formmode"+File.separatorChar+"import"+File.separatorChar+filename ;
            File oldfile = new File(xmlfilepath);
            if(oldfile.exists()){
                oldfile.delete();
            }
            if("1".equals(isaesencrypt)){
                uploadfilepath = FileUtils.aesDesEncrypt(uploadfilepath,aescode);
            }
            fm.copy(uploadfilepath,xmlfilepath);
        }catch(Exception e){
            exceptionMsg = "读取文件失败!";//读取文件失败!
            ProgressStatus.finish(sessionid,pageid);
        }
    }
    xmlfilepath = GCONST.getRootPath()+"formmode"+File.separatorChar+"import"+File.separatorChar+filename ;
    String zipfolderpath = FileUtils.unZip(xmlfilepath,StringUtils.getUnquieID());
    XmlUtils xmlUtils = new XmlUtils();
    String formDataXmlpath = zipfolderpath + File.separator + "dataSetForm.xml";
    Element dataRoot = xmlUtils.parseXml(formDataXmlpath);
    int haveData=0;
    if(dataRoot != null){
      FormDataXmlBean formDataXmlBean=new FormDataXmlBean();
      formDataXmlBean.fromSetDocument(dataRoot);    
      Map<String, String> requestidMap = formDataXmlBean.getRequestidMap();
      LogRecordService logRecordService=new LogRecordService();
      for(String key : requestidMap.keySet()){
          Map<String, String> map = logRecordService.getRecordMapByRequestid(key);
          if (!map.isEmpty()){
              String newTablename=map.get("tablename");
              if(newTablename!=""){
                rs.executeSql("select count(1) sum FROM "+newTablename);
                while(rs.next()){
                    int sum=StringUtils.getIntValue(rs.getString("sum"),0);
                    if(sum>0){
                        haveData=1;
                    }
                  } 
              }
          }
      }
    }
    jsonObject.put("haveData",haveData);
    out.print(jsonObject.toString());
}else if("8".equals(type)) {
    String wsetids =StringUtils.null2String(request.getParameter("wsetids"));
    String tsetids =StringUtils.null2String(request.getParameter("tsetids"));
    String[] wsetidsAttr=wsetids.split(",");
    String[] tsetidsAttr=tsetids.split(",");
    Map<String,Map<String,String>> wvaluemap=new HashMap();
    Map<String,Map<String,String>> tvaluemap=new HashMap();
    for(int i=0;i<wsetidsAttr.length;i++){
       String wsetid=wsetidsAttr[i];
       Map<String,String> map=new HashMap();
       List<Map<String,String>> wvalueList= new ArrayList();
       String workflowid =StringUtils.null2String(request.getParameter("workflowid"+i));
       String triggerMethod =StringUtils.null2String(request.getParameter("triggerMethod"+i)).split("_")[1];
       String triggerNodeId =StringUtils.null2String(request.getParameter("triggerNodeId"+i));
       String workflowExport =StringUtils.null2String(request.getParameter("workflowExport"+i));
       map.put("workflowid",workflowid);
       map.put("triggerMethod",triggerMethod);
       map.put("triggerNodeId",triggerNodeId);
       map.put("workflowExport",workflowExport);
       wvaluemap.put(wsetid,map);
    }
    for(int i=0;i<tsetidsAttr.length;i++){
        String tsetid=tsetidsAttr[i];
        Map<String,String> map=new HashMap();
        List<Map<String,Map<String,String>>> tvalueList= new ArrayList();
        String workflowid =StringUtils.null2String(request.getParameter("tworkflowid"+i));
        map.put("workflowid",workflowid);
        tvaluemap.put(tsetid,map);
    }
    JSONObject json1 = JSONObject.fromObject(wvaluemap);
    JSONObject json2 = JSONObject.fromObject(tvaluemap);
    request.getSession().setAttribute("workToModeSet",json1);
    request.getSession().setAttribute("modeTriggerWorkflow",json2);
    out.print(jsonObject.toString());
}
%>