QAD 实现数据批量导入(WEB版) JSP中间层
JSP 使用了Kendoui JS库
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="UTF-8" %> <%@ page import="java.util.*" %> <%@ page import="common.*" %> <%@ page import="com.jspsmart.upload.*" %> <%@ page import="com.progress.open4gl.javaproxy.*" %> <%@ page import="com.progress.open4gl.*" %> <%@ page import="java.sql.*" %> <!DOCTYPE html> <html> <head> <META NAME="AUTHOR" CONTENT="TZ"/> <meta http-equiv="Content-Type" content="text/html;charset=utf-8"/> <meta http-equiv="X-UA-Compatible" content="IE=10"/> <%! String domain = ""; String uid = ""; String xxcimtype = ""; String wbtitle = ""; String mytheme = "blueopal"; String xlstplate = ""; String dateformat = ""; String kdjsrc = ""; String ulang = ""; String myjs4 = ""; String otmsg = ""; String kdcolumns = ""; String htmltb = ""; boolean preview = false; boolean choicesync = false; boolean showdateformat = false; String isupdate = "no"; String isasync = "no"; String colist = ""; String coltype = ""; GetCfg cfg = new GetCfg(); String appsvname = cfg.appsvname; String appsvpropath = cfg.appsvpropath; String savepath = cfg.savepath; String appsvurl = cfg.appsvurl + "/" + cfg.appsvname; String tpltpath = cfg.tpltpath; %> <% StringBuilder jsterz = new StringBuilder(); if (request.getMethod().equalsIgnoreCase("POST")) { try{ SmartUpload su = new SmartUpload(); su.initialize(pageContext); su.setAllowedFilesList("xls,xlsx"); su.upload(); su.save(savepath,SmartUpload.SAVE_PHYSICAL); //以绝对路径来测试 domain = su.getRequest().getParameter("domain"); uid = su.getRequest().getParameter("uid"); xxcimtype = su.getRequest().getParameter("xxcimtype"); coltype = su.getRequest().getParameter("coltype"); isupdate = su.getRequest().getParameter("isupdate"); isasync = su.getRequest().getParameter("isasync"); com.jspsmart.upload.File file = su.getFiles().getFile(0); String filepath = savepath + "/" + file.getFileName(); //.getFilePathName(); execAppsv(filepath); java.io.File dfile = new java.io.File(filepath); if (dfile.exists()) { dfile.delete(); //删除上传的文件 } } catch(Exception e) { otmsg = e.getMessage(); } } else //get { domain = request.getParameter("domain"); uid = request.getParameter("uid"); xxcimtype = request.getParameter("xxcimtype"); execAppsv(""); if (xlstplate != null && colist != null && !xlstplate.isEmpty() && !colist.isEmpty()) { String tpltfpath = tpltpath + "/" + xlstplate; java.io.File tfile = new java.io.File(tpltfpath); if (!tfile.exists()) //如果模板尚不存在 { Npexcel p = new Npexcel(); p.createxls(colist,tpltfpath,xlstplate.substring(0,xlstplate.lastIndexOf("."))); } } } jsterz.append("<script src=\"" + kdjsrc + "/udfs/scripts/jquery.min.js\"></script>\n"); jsterz.append("<script src=\"" + kdjsrc + "/udfs/scripts/kendo.web.min.js\"></script>\n"); jsterz.append("<script src=\"" + kdjsrc + "/udfs/scripts/jszip.min.js\"></script>\n"); jsterz.append("<script src=\"" + kdjsrc + "/udfs/layer/layer.js\"></script>\n"); if (ulang.equalsIgnoreCase("ch")) { jsterz.append("<script src=\"" + kdjsrc + "/udfs/scripts/kendo.terz.ch.js\"></script>\n"); jsterz.append("<script src=\"" + kdjsrc + "/udfs/scripts/kendo.culture.zh-CN.min.js\"></script>\n"); jsterz.append("<script src=\"" + kdjsrc + "/udfs/scripts/kendo.messages.zh-CN.js\"></script>\n"); } else { jsterz.append("<script src=\"" + kdjsrc + "/udfs/scripts/kendo.terz.us.js\"></script>\n"); } %> <TITLE><%= wbtitle%></TITLE> <link href="/udfs/css/main.css" rel="stylesheet" /> <link href="/udfs/css/kendo.common.min.css" rel="stylesheet" /> <link href="/udfs/css/kendo.<%= mytheme%>.min.css" rel="stylesheet" /> <link href="/udfs/css/kendo-offline.css" rel="stylesheet" /> <%= jsterz.toString()%> <style type="text/css"> #bg{ display: none; position: absolute; top: 0%; left: 0%; width: 100%; height: 100%; background-color: black; z-index:1001; -moz-opacity: 0.2; opacity:.2; filter: alpha(opacity=70);} .loading{display: none; position: absolute; top: 50%; left: 50%; z-index:1002; } </style> </HEAD> <BODY> <div id="bg"></div> <div class="loading"><img src="/udfs/css/Default/loading-image.gif"/></div> <br/> <div align="center"> <script> function chkfile(e) { if($('input[name="filename"]').val()==null || $('input[name="filename"]').val()==''){ alert(kwarnxls); $("#bg,.loading").hide(); return false; } } </script> <form id="form1" onSubmit="return chkfile();" enctype="MULTIPART/FORM-DATA" action="xxwebcimlc.jsp" method="POST"> <table> <tr> <td> <label id="lbdomain" for="domain">Domain</label> <input id="domain" name="domain" style="width: 60px" maxlength="6" value="<%= domain%>" readonly="readonly"/> <label id="lbuse" for="loaduse">Use for</label> <input id="loaduse" name="loaduse" value="<%= wbtitle%>" style="width: 240px" maxlength="36" readonly="readonly"/> <input type="hidden" id="uid" name="uid" value="<%= uid%>"/> <input type="hidden" id="xxcimtype" name="xxcimtype" value="<%= xxcimtype%>"/> <input type="hidden" id="coltype" name="coltype" value="<%= coltype%>"/> <input type="hidden" id="isupdate" name="isupdate" value="no"/> <input type="hidden" id="isasync" name="isasync" value="no"/> </td> <td align="left"> <a id="templt" href="/udfs/docs/<%= xlstplate%>">Template</a> <button id="btnload" type="SUBMIT">Upload</button> <label id="lbckupdate" for="ckupdate">Update</label> <input id="ckupdate" type="checkbox" /> <label id="lbckasync" for="ckasync">Async</label> <input id="ckasync" type="checkbox" /> <label id="lbdateformat" for="dateformat">Date-format</label> <input id="dateformat" name="dateformat" style="width: 80px" maxlength="10" value="<%= dateformat%>" readonly="readonly"/> </td> </tr> <tr> <td> <input type="file" name="filename" id="filename" accept=".xls,.xlsx"/> </td> </tr> </table> </form> </div> <script> $(document).ready(function () { function onSelect(e) { $("#grid tbody").html(""); }; function Load(e) { $("#bg,.loading").show(); }; $("#filename").kendoUpload({ multiple: false, validation: { allowedExtensions: [".xls",".xlsx"], maxFileSize: 2100000 }, select: onSelect }); $("#loaduse").kendoButton({ }); $("#templt").kendoButton({ }); $("#domain").kendoMaskedTextBox({ }); $("#dateformat").kendoMaskedTextBox({ }); $("#btnload").kendoButton({ click: Load }); }); </script> <div> </div> <br/> <div id="webloadw"> <table id="grid"> <tbody> <%= htmltb%> </tbody> </table> <script> $(document).ready(function() { <% if (ulang.equalsIgnoreCase("ch")) { out.println("kendo.culture(\"zh-CN\");\n"); } if (!preview) { out.println("$(\"#lbckupdate\").hide();\n" + "$(\"#ckupdate\").hide();\n"); } if (!choicesync) { out.println("$(\"#lbckasync\").hide();\n" + "$(\"#ckasync\").hide();\n"); } if (!showdateformat) { out.println("$(\"#lbdateformat\").hide();\n" + "$(\"#dateformat\").hide();\n"); } %> $("#lbdomain").html(kdomain + ":"); $("#lbuse").html(kusefor + ":"); $("#templt").html(ktemplate); $("#btnload").html(kupload); $("#lbckupdate").html(kckupdate); $("#lbckasync").html(kckasync); $("#lbdateformat").html(kdateformat + ":"); $("#grid").kendoGrid({ toolbar: [{ name: "excel", text: kexprst }], excel: { allPages: true, fileName: "ResultExport.xlsx", filterable: false }, height: 635, filterable: false, resizable: true, sortable: true, columns: [ <%= kdcolumns%> ], pageable: true, pageable: { pageSizes: true } }); $("#ckupdate").click(function () { if ($("#ckupdate").is(':checked') == true) { $("#isupdate").val("yes"); } else { $("#isupdate").val("no"); } }); $("#ckasync").click(function () { if ($("#ckasync").is(':checked') == true) { $("#isasync").val("yes"); } else { $("#isasync").val("no"); } }); }); </script> </div> <% //otmsg = cfg.appsvurl + "/" + cfg.appsvname + "/" + cfg.savepath; if (!otmsg.equals("")) out.println( "<script>\n" + "layer.open({\n" + "title: 'Message',\n" + "content: '" + otmsg +"',\n" + "icon: 0,\n" + "btn: 'OK'\n" + "});\n" + "</script>"); if (!myjs4.equals("")) out.println(myjs4); %> <%! //核心部分 调用APPSERVER 执行CIMLOAD public void execAppsv(String pfilepath) { try{ Wkdatatb wktb = new Wkdatatb(pfilepath,coltype); int maxcol = wktb.getColnum(); ParamArray parms = new ParamArray(11); ProResultSetMetaDataImpl metaData1; metaData1 = new ProResultSetMetaDataImpl(maxcol); //for static table 定义列数 还要定义列名 for (int i=1;i<=maxcol;i++) { metaData1.setFieldMetaData(i,"wkchr" + String.valueOf(i),0,Parameter.PRO_CHARACTER); //统一读取为字符型 } ProResultSetMetaDataImpl metaData2; metaData2 = new ProResultSetMetaDataImpl(16); //for table handle 只要定义fldnumber parms.addCharacter(0,domain,ParamArrayMode.INPUT); parms.addCharacter(1,uid,ParamArrayMode.INPUT); parms.addCharacter(2,xxcimtype,ParamArrayMode.INPUT); parms.addCharacter(3,isupdate,ParamArrayMode.INPUT); parms.addCharacter(4,isasync,ParamArrayMode.INPUT); if (!pfilepath.equals("")) parms.addTable(5,wktb,ParamArrayMode.INPUT,metaData1); else parms.addTable(5,null,ParamArrayMode.INPUT,metaData1); parms.addTableHandle(6,null,ParamArrayMode.OUTPUT,metaData2); parms.addCharacter(7,null,ParamArrayMode.OUTPUT); parms.addLongchar(8,null,ParamArrayMode.OUTPUT); parms.addLongchar(9,null,ParamArrayMode.OUTPUT); parms.addLogical(10,true,ParamArrayMode.INPUT); //true: 在QAD里需要检查session false: 不需要验证QAD的session OeAppsvHelper.execProc(appsvurl,appsvname,appsvpropath + "xxwebcimlcsrv.p",parms); ResultSet rs = (ResultSet)parms.getOutputParameter(6); otmsg = (String)parms.getOutputParameter(7); htmltb = (String)parms.getOutputParameter(8); kdcolumns = (String)parms.getOutputParameter(9); parms.clear(); if (rs.next()) //返回的就只有一个rs 故不用循环 { wbtitle = rs.getString("wbtitle"); mytheme = rs.getString("mytheme"); xlstplate = rs.getString("xlstplate"); preview = rs.getBoolean("preview"); choicesync = rs.getBoolean("choicesync"); showdateformat = rs.getBoolean("showdateformat"); dateformat = rs.getString("dateformat"); kdjsrc = rs.getString("kdjsrc"); ulang = rs.getString("ulang"); myjs4 = rs.getString("myjs4"); colist = rs.getString("colist"); coltype = rs.getString("coltype"); //可补充 对应appserver端 } if (otmsg.equals("")) otmsg = wktb.getErr(); } catch(Exception e){ otmsg = e.getMessage(); } } %> </BODY> </HTML>

浙公网安备 33010602011771号