⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pldrhandler.java

📁 java操作excel数据批量导入
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
package com;

import java.io.File;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
import java.text.NumberFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import jxl.Cell;
import jxl.CellType;
import jxl.DateCell;
import jxl.LabelCell;
import jxl.NumberCell;
import jxl.Sheet;
import jxl.Workbook;

import com.jstrd.gdzc.comm.Department;
import com.jstrd.gdzc.comm.GdzcDate;
import com.jstrd.gdzc.comm.SysPath;
import com.jstrd.util.DBConnection;
import com.jstrd.web.Token;

public class PldrHandler extends HttpServlet {
	private String message = ""; // 验证错误信息a

	private Statement stmt = null;

	// private String k_dwbh = ""; //单位编号
	// private String kpbName = "gd_kpb"; //根据单位编号得到的卡片表表名
	int rows = 0; // Excel的行数

	// private String userName; //当前登陆用户姓名
	private int startSheet = 0;

	private int startRow = 2;

	private int columns = 45; // 列

	// private Date jkrq = null;
	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, java.io.IOException {

	}

	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, java.io.IOException {

		HttpSession session = request.getSession();
		Token token = (Token) session.getAttribute("token");
		message = "";
		Date jkrq = null;
		String k_dwbh = "";
		String userName = "";
		// String dw = "";
		String kpbName = "";
		String k_jkrq = request.getParameter("k_jkrq");
		SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
		try {
			jkrq = df.parse(k_jkrq);
		} catch (ParseException e2) {
			System.out.println(e2.getMessage());
		}
		k_dwbh = (String) request.getParameter("k_dwbh").substring(0, 4);

		// if (k_dwbh==null || k_dwbh="")
		// {
		// k_dwbh=token.get
		// }
		// System.out.println("k_dwbh-->" + k_dwbh);
		userName = request.getParameter("UserName");
		// System.out.println("userName-->" + userName);
		// kpbName = (String) CodeConvert.SQLTABLE.get(k_dwbh);
		kpbName = Department.GetSpecialDepartmentCardTableName(k_dwbh);
		// dw = kpbName.substring(6);
		String path = request.getParameter("path");
		path = session.getServletContext().getRealPath("/") + "/" + path;
		request.setAttribute("filepath", path);
		// System.out.println("path-->" + path);
		System.out.println("单位" + k_dwbh + "开始验证批量导入数据格式:");

		if (message.equals("")) {
			// DBBroke db = BrokeFactory.getBroke(token.getDSName());
			DBConnection db = null;
			String tableName = "";
			try {
				db = new DBConnection(token.getDSName());
				long startTime = System.currentTimeMillis();
				ArrayList arr = validate(path, k_dwbh, jkrq, db, token); // 批量导入验证,并将数据导入list

				long endTime = System.currentTimeMillis();
				System.out.println("单位" + k_dwbh + "批量导入验证格式完毕,共耗时:"
						+ (endTime - startTime) + "毫秒");

				if (message.equals("")) {
					System.out.println("单位" + k_dwbh + "批量导入开始建立临时表:");
					startTime = System.currentTimeMillis();
					tableName = tempTable(arr, userName, k_dwbh, kpbName, db,
							token); // 将list中的数据导入到临时表temp_pldr_用户名 表中,并验证数据正确型
					endTime = System.currentTimeMillis();
					System.out.println("单位" + k_dwbh + "批量导入建立临时表完毕,共耗时:"
							+ (endTime - startTime) + "毫秒");

					if (message.equals("")) {
						System.out.println("单位" + k_dwbh + "开始批量导入数据:");
						startTime = System.currentTimeMillis();
						PLDRIMPORT pldr = new PLDRIMPORT();
						pldr.importData(k_dwbh, userName, tableName, db);
						endTime = System.currentTimeMillis();
						System.out.println("单位" + k_dwbh + "批量导入数据完毕,共耗时:"
								+ (endTime - startTime) + "毫秒");
					} else {
						System.out.println("单位" + k_dwbh + "临时表数据验证未通过!");
						request.setAttribute("ErrorMessage", message);
						getServletContext().getRequestDispatcher(
								"/wrzgl/pldr/pldr_error.jsp").forward(request,
								response);
						return;// mapping.findForward("error");
					}
				} else {
					System.out.println("单位" + k_dwbh + "临时表数据验证未通过!");
					request.setAttribute("ErrorMessage", message);
					getServletContext().getRequestDispatcher(
							"/wrzgl/pldr/pldr_error.jsp").forward(request,
							response);
					return;// mapping.findForward("error");
				}
			} catch (Exception e) {
				System.out.println("批量导入发生错误,原因:" + e.getMessage());
				String message = e.getMessage() + "\n";
				request.setAttribute("ErrorMessage", message);
				getServletContext().getRequestDispatcher(
						"/wrzgl/pldr/pldr_error.jsp")
						.forward(request, response);
				return;// mapping.findForward("error");

			} finally {
				try {
					if (!tableName.equals("")) {
						delTable(tableName, k_dwbh, db);
					}
					db.close();
				} catch (Exception e) {

				}
			}
			getServletContext().getRequestDispatcher(
					"/wrzgl/pldr/pldr_success.jsp").forward(request, response);
			// mapping.findForward("success");
			// return mapping.findForward("success");
		} else {
			System.out.println("单位" + k_dwbh + "批量导入格式验证未通过!");
			request.setAttribute("ErrorMessage", message);
			getServletContext().getRequestDispatcher(
					"/wrzgl/pldr/pldr_error.jsp").forward(request, response);
			// mapping.findForward("error");

		}
	}

	private String tempTable(ArrayList arr, String userName, String k_dwbh,
			String kpbName, DBConnection db, Token token) throws Exception {
		Statement stmt = null;
		ResultSet rs = null;
		ResultSet rs2 = null;
		PreparedStatement pstmt = null;
		System.out.println("tempTable" + k_dwbh);
		System.out.println("tempTable" + userName);
		System.out.println("tempTable" + kpbName);
		String tableName = "";
		try {

			stmt = db.getConnection().createStatement();

			tableName = "temp_pldr_" + userName;
			String sql = "select count(*) from all_tables t where t.table_name = '"
					+ tableName.toUpperCase() + "'";
			rs = stmt.executeQuery(sql);
			rs.next();
			if (rs.getInt(1) > 0) {
				delTable(tableName, k_dwbh, db);
			}
			rs.close();
			sql = " create table " + tableName + " ( " + " id numeric(10,0) ,"
					+ " k_xh     NUMBER(18)  NOT NULL,"
					+ " k_kpbh   NUMBER(18)  DEFAULT 0,"
					+ " k_dwbh   varchar2(20)    NOT NULL ," // DEFAULT '" +
					// k_dwbh + "',"
					+ " k_zcbh   varchar2(80)    DEFAULT '',    "
					+ " k_zcml   varchar2(18)    NULL,    "
					+ " k_zcfl   NUMBER(5)       NULL,    "
					+ " k_kmdh   varchar2(20)    NULL,    "
					+ " k_zcgs   NUMBER(5)       NULL,    "
					+ " k_zygs   NUMBER(5)   NULL,    "
					+ " k_zyft   varchar2(200)   NULL,    "
					+ " k_cpft   varchar2(200)   DEFAULT '',    "
					+ " k_cpsx   VARCHAR2(20)   NULL,    "
					+ " k_kpxz   NUMBER(5)        DEFAULT 0,    "
					+ " k_zgf    NUMBER(5)        NULL,    "
					+ " k_fz     NUMBER(5)        NULL,    "
					+ " k_fkpbh  numeric(18,0)  DEFAULT 0,    "
					+ " k_fkpxh  numeric(18,0)  NULL,    "
					+ " k_glkpbh numeric(18,0)  DEFAULT 0,    "
					+ " k_zjlx   NUMBER(5)       NULL,    "
					+ " k_abc    char(1)        DEFAULT '',    "
					+ " k_jgggcs varchar2(200)   NULL,    "
					+ " k_sccj   varchar2(200)   NULL,    "
					+ " k_sl     numeric(18,4)  NULL,    "
					+ " k_glbm   varchar2(20)    NULL,    "
					+ " k_sybm   varchar2(20)    NULL,    "
					+ " k_sydd   varchar2(200)   NULL,    "
					+ " k_bgy    varchar2(20)    NULL,    "
					+ " k_gmrq   TIMESTAMP(6)       NULL,    "
					+ " k_jkrq   TIMESTAMP(6)       NULL,    "
					+ " k_kssyrq TIMESTAMP(6)       NULL,    "
					+ " k_rzrq   TIMESTAMP(6)       NULL,    "
					+ " k_zczt   NUMBER(5)       DEFAULT 1,    "
					+ " k_zjnx   NUMBER(5)           DEFAULT 0,    "
					+ " k_qbnynx NUMBER(5)            DEFAULT 0,    "
					+ " k_sksynx NUMBER(5)            DEFAULT 0,    "
					+ " k_yz     numeric(18,2)  NULL,    "
					+ " k_jz     numeric(18,2)  NULL,    "
					+ " k_jcz    numeric(18,2)  NULL,    "
					+ " k_ljzj   numeric(18,2)  NULL,    "
					+ " k_ljjz   numeric(18,2)  DEFAULT 0,    "
					+ " k_yzjl   numeric(15,12) DEFAULT 0,    "
					+ " k_yzje   numeric(18,2)  DEFAULT 0,    "
					+ " k_zjff   NUMBER(5)       DEFAULT 1,    "
					+ " k_zjzt   NUMBER(5)       DEFAULT 0,    "
					+ " k_sfjt   NUMBER(5)       DEFAULT 0,    "
					+ " k_gcbh   varchar2(200)    NULL,    "
					+ " k_gcmc   varchar2(200)   NULL,    "
					+ " k_swzcbh varchar2(200)    NULL,    "
					+ " k_pzbh   varchar2(40)    NULL,    "
					+ " k_khsx   NUMBER(5)       NULL,    "
					+ " k_bz     varchar2(100)   NULL,    "
					+ " k_jslx   NUMBER(5)            DEFAULT 0,    "
					+ " k_pyf    NUMBER(5)       NULL,    "
					+ " k_syr   varchar2(40)   NULL,    "
					+ " k_czl    numeric(10,2)  DEFAULT 0.03,    "
					+ " k_zcmc   varchar2(600)    NULL,    "
					+ " k_zdybm  varchar2(20)    DEFAULT '',    "
					+ " k_jkr    varchar2(20)    NULL,    "
					+ " k_shf    NUMBER(5)       DEFAULT 1,    "
					+ " k_gly     varchar2(20)   NULL,"
					+ " k_gys     varchar2(100)   NULL,    "
					+ " k_qybm  varchar2(40)   NULL,"
					+ " k_sbwzh   varchar2(100)   NULL,    "
					+ " k_bklyl   numeric(18,2)  NULL,    "
					+ " k_yhszl   numeric(18,2)  NULL,    "
					/*
					 * + " k_yzje01 numeric(18,2) DEFAULT 0, " + " k_yzje02
					 * numeric(18,2) DEFAULT 0, " + " k_yzje03 numeric(18,2)
					 * DEFAULT 0, " + " k_yzje04 numeric(18,2) DEFAULT 0, " + "
					 * k_yzje05 numeric(18,2) DEFAULT 0, " + " k_yzje06
					 * numeric(18,2) DEFAULT 0, " + " k_yzje07 numeric(18,2)
					 * DEFAULT 0, " + " k_yzje08 numeric(18,2) DEFAULT 0, " + "
					 * k_yzje09 numeric(18,2) DEFAULT 0, " + " k_yzje10
					 * numeric(18,2) DEFAULT 0, " + " k_yzje11 numeric(18,2)
					 * DEFAULT 0, " + " k_yzje12 numeric(18,2) DEFAULT 0, "
					 */
					+ " k_ynsj      TIMESTAMP(6)      NULL ,    "
					+ " k_zclx NUMBER(5) DEFAULT 1)";

			/*
			 * + " CONSTRAINT k_xh " + " PRIMARY KEY NONCLUSTERED (k_xh)" + " ) ";
			 */
			db.executeUpdate(sql);
			/*
			 * sql = " select * into " + tableName + " from gd_pldrb ";
			 * db.executeUpdate(sql); sql = " delete from " + tableName;
			 * db.executeUpdate(sql);
			 */

			sql = "insert into "
					+ tableName
					+ " (k_xh,k_dwbh,k_zcml, k_zcfl,k_kmdh,k_zcgs,k_zygs,k_zyft,    "
					+ " k_cpsx,k_zgf,k_fz,k_fkpbh,k_fkpxh,k_zjlx,"
					+ " k_jgggcs,k_sccj,k_sl,k_glbm,k_sybm,k_sydd,k_bgy,k_gmrq,k_jkrq,k_kssyrq,    "
					+ " k_rzrq,k_yz,k_jz,k_jcz,k_ljzj,"
					+ " k_gcbh,k_gcmc,k_swzcbh,k_pzbh,k_khsx,k_bz, "
					+ " k_pyf,k_syr,k_zcmc,k_jkr,k_gly, k_gys,   "
					+ " k_qybm, k_sbwzh, k_bklyl, k_yhszl,k_zclx"
					+ " ) values( " + " ?,?,?,?,?,?,?,?,?,?,?,?,"
					+ " ?,?,?,?,?,?,?,?,?,?,?," + " ?,?,?,?,?,?,?,?,?,?,?,"
					+ " ?,?,?,?,?,?,?,?,?,?,?,?)";
			// Connection conn = db.getConnection();
			// conn.setAutoCommit(false);
			pstmt = db.getConnection().prepareStatement(sql);
			/*
			 * PreparedStatement pstmt =
			 * ((SybConnection)conn).prepareStatement(sql,false);
			 */
			// long start = System.currentTimeMillis();
			for (int i = 0; i < arr.size(); i++) {
				PLDRKP rowkp = (PLDRKP) arr.get(i);
				pstmt.setLong(1, rowkp.getXh());
				pstmt.setString(2, rowkp.getDwbh());
				pstmt.setString(3, rowkp.getZcml());
				pstmt.setInt(4, rowkp.getZcfl());
				pstmt.setString(5, rowkp.getKmdh());
				pstmt.setInt(6, rowkp.getZcgs());
				pstmt.setInt(7, rowkp.getZygs());
				pstmt.setString(8, rowkp.getZyft());
				pstmt.setString(9, rowkp.getCpsx());
				pstmt.setInt(10, rowkp.getZgf());
				pstmt.setInt(11, rowkp.getFz());
				pstmt.setLong(12, rowkp.getFkpbh());
				pstmt.setLong(13, rowkp.getFkpxh());
				pstmt.setInt(14, rowkp.getZjlx());
				pstmt.setString(15, (rowkp.getJgggcs()));
				pstmt.setString(16, (rowkp.getSccj()));
				pstmt.setDouble(17, rowkp.getSl());
				pstmt.setString(18, rowkp.getGlbm());
				pstmt.setString(19, rowkp.getSybm());
				pstmt.setString(20, (rowkp.getSydd()));
				pstmt.setString(21, (rowkp.getbgy()));
				pstmt.setDate(22, new java.sql.Date(rowkp.getGmrq().getTime()));
				pstmt.setDate(23, new java.sql.Date(rowkp.getJkrq().getTime()));
				pstmt.setDate(24,
						new java.sql.Date(rowkp.getKssyrq().getTime()));
				pstmt.setDate(25, new java.sql.Date(rowkp.getRzrq().getTime()));
				pstmt.setDouble(26, rowkp.getYz());
				pstmt.setDouble(27, rowkp.getJz());
				pstmt.setDouble(28, rowkp.getJcz());
				pstmt.setDouble(29, rowkp.getLjzj());
				pstmt.setString(30, rowkp.getGcbh());
				pstmt.setString(31, (rowkp.getGcmc()));
				pstmt.setString(32, (rowkp.getSwzcbh()));
				pstmt.setString(33, rowkp.getPzhm());
				pstmt.setInt(34, rowkp.getKhsx());
				pstmt.setString(35, (rowkp.getBz()));
				pstmt.setInt(36, rowkp.getPyf());
				pstmt.setString(37, (rowkp.getSyr()));
				pstmt.setString(38, (rowkp.getZcmc()));
				pstmt.setString(39, (rowkp.getJkr()));
				pstmt.setString(40, (rowkp.getGly()));
				pstmt.setString(41, (rowkp.getGys()));
				pstmt.setString(42, rowkp.getQybm());
				pstmt.setString(43, (rowkp.getSbwzh()));
				pstmt.setDouble(44, rowkp.getBklyl());
				pstmt.setDouble(45, rowkp.getYhszl());
				pstmt.setInt(46, rowkp.getK_zclx());

				// pstmt.addBatch();
				pstmt.executeUpdate();

			}
			// 资产目录
			sql = " select k_xh from " + tableName + " where k_xh not in ("
					+ " select k_xh from " + tableName
					+ " a,gd_zcmlb b where a.k_zcml=b.k_zcml) ";
			rs = db.executeQuery(sql);
			while (rs.next()) {
				message += "序号[" + rs.getLong(1) + "]的卡片资产目录不存在\n";
			}
			rs.close();

			sql = " select k_xh from "
					+ tableName
					+ " where k_fz=1 and k_xh in ("
					+ " select k_xh from "
					+ tableName
					+ " a,gd_zcmlb b where a.k_zcml=b.k_zcml and ((LENGTH(a.k_zcml)>9  and LENGTH(a.k_zcml)<=11) or LENGTH(a.k_zcml)<=7) and a.k_fz=1) ";
			rs = db.executeQuery(sql);
			while (rs.next()) {
				message += "序号[" + rs.getLong(1) + "]的卡片的资产目录不允许建父卡片\n";
			}
			rs.close();

			// 会计科目
			sql = " select k_xh from " + tableName + " where k_xh not in ("
					+ " select k_xh from " + tableName
					+ " a,gd_kmdhb b where a.k_kmdh=b.k_kmdh) ";
			rs = db.executeQuery(sql);
			while (rs.next()) {
				message += "序号[" + rs.getLong(1) + "]的卡片会计目录不存在\n";
			}
			rs.close();

			// 资产分类
			sql = " select k_xh from " + tableName + " where k_xh not in ("
					+ " select k_xh from " + tableName
					+ " a,gd_zcflb b where a.k_zcfl=b.k_zcfl) ";
			rs = db.executeQuery(sql);
			while (rs.next()) {
				message += "序号[" + rs.getLong(1) + "]的卡片资产分类不存在\n";
			}
			rs.close();

			// 资产归属
			sql = " select k_xh from " + tableName + " where k_xh not in ("
					+ " select k_xh from " + tableName
					+ " a,gd_zcgsb b where a.k_zcgs=b.k_zcgs) ";
			rs = db.executeQuery(sql);
			while (rs.next()) {
				message += "序号[" + rs.getLong(1) + "]的卡片资产归属不存在\n";
			}
			rs.close();

			// 专业归属
			sql = " select k_xh from " + tableName + " where k_xh not in ("
					+ " select k_xh from " + tableName
					+ " a,gd_zygsb b where a.k_zygs=b.k_zygs) ";
			rs = db.executeQuery(sql);
			while (rs.next()) {
				message += "序号[" + rs.getLong(1) + "]的卡片专业归属不存在\n";
			}
			rs.close();
			// 使用部门
			sql = " select k_xh from "
					+ tableName
					+ " where k_xh not in ("
					+ " select k_xh from "
					+ tableName
					+ " a,gd_dsbmb b where b.k_dwbh=a.k_dwbh and a.k_sybm=b.k_bmbh ) ";
			rs = db.executeQuery(sql);

			while (rs.next()) {
				message += "序号[" + rs.getLong(1) + "]的卡片使用部门编码不存在或非使用部门\n";
			}
			rs.close();

			// 管理部门
			// System.out.println(token.getDeptFlg());
			if (Integer.parseInt(token.getDeptFlg()) == 0) {
				sql = " select k_xh from "
						+ tableName
						+ " where k_xh not in ("
						+ " select k_xh from "
						+ tableName
						+ " a,gd_dsbmb b where b.k_dwbh=a.k_dwbh and a.k_glbm=b.k_bmbh and b.k_bmxz=1) ";

				rs = db.executeQuery(sql);
				while (rs.next()) {
					message += "序号[" + rs.getLong(1) + "]的卡片管理部门编码不存在或非管理部门\n";
				}
				rs.close();

			} else {
				sql = " select k_xh from "
						+ tableName
						+ " where k_xh not in ("
						+ " select k_xh from "
						+ tableName
						+ " a,gd_dsbmb b where a.k_dwbh=b.k_dwbh and length(a.k_dwbh)<=4 and a.k_glbm=b.k_bmbh and b.k_bmxz=1) ";

				rs = db.executeQuery(sql);
				while (rs.next()) {
					message += "序号[" + rs.getLong(1) + "]的卡片管理部门编码不存在或非管理部门\n";
				}
				rs.close();

				sql = " select k_xh from "
						+ tableName
						+ " where k_xh not in ("
						+ " select k_xh from "
						+ tableName
						+ " where k_glbm in(select k_bmbh from gd_dsbmb where k_dwbh like '"
						+ k_dwbh + "%' "
						+ " and k_bmxz=1 ) and length(k_dwbh)>4";

				rs = db.executeQuery(sql);
				while (rs.next()) {
					message += "序号[" + rs.getLong(1) + "]的卡片管理部门编码不存在或非管理部门\n";
				}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -