当前位置: 代码迷 >> Java Web开发 >> 报表中的导入操作
  详细解决方案

报表中的导入操作

热度:292   发布时间:2010-10-14 13:53:23.0
报表中的导入操作
程序代码:
function exportIn(){
    with(document.getElementById("nameInfo")){
        action = "<%=strContext%>/pretreament/exportAction.do?method=specExportIn";
        method = "post";
        enctype="multipart/form-data";
        submit();
    }
}

<input type="button" value=">>>开始  onclick="exportIn()" />

/** 通过specIn.jsp跳转 通过剂型标准化 Excel导入 (liyc添加) */
    public ActionForward specExportIn(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response)
    throws Exception {
        System.out.println("+++++++++++++++++++++++++++++++++++++++in_expore_action++++++++");
        try {
            String med_type = (String)request.getSession(true).getAttribute("med_type");
            String taskId = (String) request.getSession(true).getAttribute("taskId");
            String filePath = "" + request.getRealPath("/")
            + "\\jsp\\pretreament\\fileUpload";
            String path = p.uploadFile(form, request, filePath); // 文件的路径
            String result = biz.specExportIn(path, med_type,taskId); // 导入excel
            int num_insert = 0;
            int num_update = 0;
            if(result!=null && !result.trim().equals("")&& !result.trim().equals("0,0")){
                String[] temp = result.split(",");
                num_insert = Integer.parseInt(temp[0]);
                num_update = Integer.parseInt(temp[1]);
            }
            IStandardService sBiz = new StandardServiceImpl();
            ParamUtils pu = new ParamUtils();
            CriterionInfo c = new CriterionInfo();
            String userName = (String) pu.getSessionObject(request, "userNm");
            c.setUserId(userName);
            c.setTitle("PRE_CRITERIONSPEC");
            c.setTaskId(taskId);
            c.setOpeLink("1");
            c.setMedType(med_type);
            c.setTotal(String.valueOf(num_update));
            System.out.println("result===>>>>"+result);
            // 如果插入结果返回值等于0,就不会插入
            if (result!=null && !result.trim().equals("")&& !result.trim().equals("0,0")) {
                sBiz.saveCriterionLog(c); // 添加规则导入日志
                Cronlog cronlog = new Cronlog();
                cronlog.setLogMisId(taskId);
                cronlog.setLogContent("更新规则到剂型全匹配规则库,共添加数据"+num_insert+"条;更新数据"+num_update+"条");
                cronlog.setLogUserId(userName);
                cronlog.setLogModule("2"); // 2:剂型标准化
                cronlog.setLogFlag("1");
                cronlog.setMedType(med_type);
                dLog.createDiary(cronlog);
            }
            /************ 删除服务器上缓存文件 ***********/
            p.deleteFile(filePath, path);
            /***************************/
        } catch (Exception e) {
            e.printStackTrace();
        }
        return new ActionForward(
        "/standardAction.do?method=getCriterionLog&opeLink=1");
    }


// 剂型标准化,导入Excel.【传入参数为:解读的文件路径和药品类型以及任务的ID】
    public String specExprotIn(String filename, String med_type,String taskId) throws Exception {
        Excel ex = new Excel();
        //        String[] list = null;
        String[] array = null;
        boolean result = false;
        int number = 0;
        int num_update = 0;
        PreUtils pu = new PreUtils();
        db = db.getDBTool();
        conn = db.getConn(dbSource);
        // excel总行数
        System.out.println("+++++++++++++++++++++++++++++++++++++++in_spec_daoImpl++++++++");
        int row = 0;
        String sql = "insert into PRE_CRITERIONSPEC(REP_SPEC,MEDNAME,SPEC,CONTENT,CONTENTUNIT,DOSAGE,DOSAGEUNIT,SCALAR,"
            + "PRODUCE_COM,CHARACT,WRAPPER,REST,CREATE_USER,DEPARTMENT,med_type) values("
            + "?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
        /*增加一个更新语句*/
        String sql_update = "UPDATE PRE_CRITERIONSPEC SET SPEC = ? WHERE PRE_CRITERIONSPEC.REP_SPEC= ? and PRE_CRITERIONSPEC.MED_TYPE='"+med_type+"'";

        //增加一个剔除的语句
        String sql_delete = "update pre_standarddata set w_flag='1' where (rep_spec=? or rep_spec is null) and standardtask_id="+taskId+" and (med_type=? or med_type is null)";

        try {
            // 打开excel文件
            result = ex.openExcel(filename);
            if (result) {
                // 读excel文件0号工作薄
                row = ex.getRowCount(0);
                // 如果这个Excel行数 小于1 就返回.
                if (row < 1) {
                    result = false;
                } else {
                    // 执行SQL语句
                    System.out.println(row+"################################################ssss######################"+sql);
                    pst = conn.prepareStatement(sql);
                    //增加一个update预编译
                    pst_update = conn.prepareStatement(sql_update);
                    //增加一个update删除标识预编译
                    pst_delete =conn.prepareStatement(sql_delete);

                    for (int i = 1; i < row; i++) {
                        array = ex.getRowArray(i);
                        int len = array.length;
                        System.out.println(array[1] + "=1 " + array[2]
                                                                    + "=2 " + array[3] + "=3 " + array[4] + "=4 "
                                                                    + array[5] + " =5" + array[6] + "=6 "
                                                                    + array[7] + "=7 " + array[8] + "=8 "
                                                                    + array[9] + "=9 " + array[10] + "=10 "
                                                                    + array[11] + "=11 " + array[12] + " =12"   
                                                                    + array[13]+"=13"+array[14]+"=14"+array[15]+"=15"+array[17]);

                        if (len > 0&&array[14]!=null&&!array[14].trim().equals("")) {  
                            String mSql = "select * from PRE_CRITERIONSPEC where rep_spec='"
                                + array[2] + "' and med_type='"+pu.format5(array[1])+"'";
                            System.out.println(len+"========ddddd=1");
                            int num = pu.getNum(mSql);
                            if (num > 0) {
                                System.out.println("num====="+num);

                                //看有没有删除标识,有的话执行删除规则库操作
                                if(array[15]!=null&&array[15].trim().equals("1")){

                                    pst_delete.setString(1, pu.format4_yuchuli(array[2]));
                                    pst_delete.setString(2, pu.format4_yuchuli(array[1]));
                                    pst_delete.addBatch();
                                    /*看有没有修改标示,有的话执行更新规则库操作*/
                                }else if(array[17]!=null&&array[17].trim().equals("1")){

                                    System.out.println("*&*&*&*&");
                                    pst_update.setString(1, pu.format4(array[4]));
                                    pst_update.setString(2, pu.format4(array[2]));
                                    pst_update.addBatch();
                                    num_update++;

                                }
                                System.out.println(pu.format5(array[1])+"===="+array[2] + ":重复条目");
                            } else if (num == 0) {
                                number++;

                                pst.setString(1, pu.format3(array[2]));
                                pst.setString(2, pu.format4(array[3]));
                                pst.setString(3, pu.format4(array[4]));
                                pst.setString(4, pu.format4(array[5]));
                                pst.setString(5, pu.format4(array[6]));
                                pst.setString(6, pu.format4(array[7]));
                                pst.setString(7, pu.format4(array[8]));
                                pst.setString(8, pu.format4(array[9]));
                                pst.setString(9, pu.format4(array[10]));
                                pst.setString(10, pu.format4(array[11]));
                                pst.setString(11, pu.format4(array[12]));
                                pst.setString(12, pu.format4(array[13]));
                                pst.setString(13, pu.format4(array[14]));
                                pst.setString(14, pu.format4(array[15]));
                                pst.setString(15, pu.format5(array[1]));
                                pst.addBatch();
                            }
                        }
                    }
                    //piliang
                    pst_update.executeBatch();
                    pst.executeBatch();
                    pst_delete.executeBatch();
                }
            }
        } catch (Exception e) {
            number = 0;
            e.printStackTrace();
        } finally {
            this.closeRs();
        }
        return number+","+num_update;
    }



public final static String PRE_WHOLESALE_TOP[] = {"序号","上报药品名称","上报药品类别","医保序号","上报剂型","上报规格",
        "生产企业名称","最小零售单位","销售数量","销售价格","购进数量","购进价格","批发报送单位","调查年度","地域","标准药品类别","标准医保序号","标准药品名称","标准剂型",
         "标准含量", "标准含量单位", "标准装量","标准装量单位", "包装数量","包装数量单位", "标准生产企业名称", "性状", "包装材料", "其他",
         "标准地域名称","处室","原研定价", "单独定价", "统一定价"};

资源共享,对大家有帮助的就顶下,谢谢了O(∩_∩)O~
搜索更多相关主题的帖子: 报表  function  action  button  method  

----------------解决方案--------------------------------------------------------
需要的包,在下载资源里面有
----------------解决方案--------------------------------------------------------
  相关解决方案