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

📄 signoffservice.java

📁 银行项目为后台socket通信写的程序
💻 JAVA
字号:
/****************************************************************************
 * Package		: com.ecSolutions.ecAppServer.business
 * File			: SignOffService.java
 * Create Date  : 2007-7-21
 * Author		: Steven Chen
 * 
 * Copyright(C) 2006 ecSolutions(shanghai) Co.,Limited.All Rights Reserved.
 *			
 ***************************************************************************/
package com.ecSolutions.ecAppServer.business;

import java.io.File;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Time;
import java.text.SimpleDateFormat;
import java.util.Date;

import org.apache.log4j.Logger;

import com.ecSolutions.ecAppServer.appSession.AppServerSessionMgr;
import com.ecSolutions.ecAppServer.appSession.User;
import com.ecSolutions.ecAppServer.util.DbUtil;

public class SignOffService {
	private String req;
	private AppServerSessionMgr sessionMgr ;

	private static Logger log = Logger.getLogger("SignOffService");

	public void signOff() {
		String sessionId = splitRequestValue(req);
		deleteFile(sessionId);		
		Connection conn = null;
		try {
			conn = DbUtil.getConnection();
			conn.setAutoCommit(false);
			insertRecord(conn,sessionId);			
			conn.commit();
		} catch (SQLException e2) {
			log.error("error in create connection " + e2);
			try {
				conn.rollback();
			} catch (SQLException e) {
				log.error("error in rollback "+e);
			}
		}finally {
		if (conn != null) {
			try {
				conn.close();
			} catch (SQLException e) {
			}
			conn = null;
		}
		}
		
		try {
			conn = DbUtil.getConnection();
			conn.setAutoCommit(false);			
			deleteRecord(conn, sessionId);
			deleteM1Record(conn, sessionId);
			conn.commit();
		} catch (SQLException e2) {
			log.error("error in create connection " + e2);
			try {
				conn.rollback();
			} catch (SQLException e) {
				log.error("error in rollback "+e);
			}
		}finally {
		if (conn != null) {
			try {
				conn.close();
			} catch (SQLException e) {
			}
			conn = null;
		}
		}
		sessionMgr = AppServerSessionMgr.getInstance();
		User user = sessionMgr.getSession(sessionId);
		destroyUserProcess(user);
		sessionMgr.removeSession(sessionId);
		
	}

	public void signOff(String sessionId) {
		deleteFile(sessionId);		
		Connection conn = null;
		try {
			conn = DbUtil.getConnection();
			conn.setAutoCommit(false);
			insertRecord(conn,sessionId);			
			conn.commit();
		} catch (SQLException e2) {
			log.error("error in create connection " + e2);
			try {
				conn.rollback();
			} catch (SQLException e) {
				log.error("error in rollback "+e);
			}
		}finally {
			if (conn != null) {
				try {
					conn.close();
				} catch (SQLException e) {
				}
				conn = null;
			}
			}
		
		try {
			conn = DbUtil.getConnection();
			conn.setAutoCommit(false);			
			deleteRecord(conn, sessionId);
			deleteM1Record(conn, sessionId);
			conn.commit();
		} catch (SQLException e2) {
			log.error("error in create connection " + e2);
			try {
				conn.rollback();
			} catch (SQLException e) {
				log.error("error in rollback "+e);
			}
		}finally {
			if (conn != null) {
				try {
					conn.close();
				} catch (SQLException e) {
				}
				conn = null;
			}
			}

		sessionMgr = AppServerSessionMgr.getInstance();
		User user = sessionMgr.getSession(sessionId);
		destroyUserProcess(user);
		sessionMgr.removeSession(sessionId);
	}
	
	public SignOffService(String request) {
		this.req = request;
	}

	public String splitRequestValue(String requestvalue) {
		// String messageSize=requestvalue.substring(0,4);
		// String messageType=requestvalue.substring(4,8);
		String sessionId = requestvalue.substring(8, 12);
		/*AppServerSessionMgr appmg = AppServerSessionMgr.getInstance();
		if (appmg.hasSession(sessionId)) {
			appmg.removeSession(sessionId);
		}*/
		return sessionId;

	}

	private void deleteRecord(Connection conn, String sessionId) throws SQLException {		
		PreparedStatement preparedStatement = null;
		ResultSet resultSet = null;
		String sql = "select * from T56M0XXX where SESSID=?";
		try {			
			preparedStatement = conn.prepareStatement(sql);
			preparedStatement.setInt(1, Integer.parseInt(sessionId));
			resultSet = preparedStatement.executeQuery();
			if (resultSet.next()) {
				preparedStatement = conn
						.prepareStatement("delete from  T56M0XXX where SESSID = ?");
				preparedStatement.setInt(1, Integer.parseInt(sessionId));

				preparedStatement.execute();

			}
		}finally {
			if (resultSet != null) {
				try {
					resultSet.close();
				} catch (SQLException e) {
				}
				resultSet = null;
			}
			if (preparedStatement != null) {
				try {
					preparedStatement.close();
				} catch (SQLException e) {
				}
				preparedStatement = null;
			}

		}

	}

	private void deleteM1Record(Connection conn, String sessionId) throws SQLException {		
		PreparedStatement preparedStatement = null;
		ResultSet resultSet = null;
		String sql = "select * from T56M1XXX where SESSID=?";
		try {			
			preparedStatement = conn.prepareStatement(sql);
			preparedStatement.setInt(1, Integer.parseInt(sessionId));
			resultSet = preparedStatement.executeQuery();
			if (resultSet.next()) {
				preparedStatement = conn
						.prepareStatement("delete from  T56M1XXX where SESSID = ?");
				preparedStatement.setInt(1, Integer.parseInt(sessionId));
				preparedStatement.execute();

			}
		} finally {
			if (resultSet != null) {
				try {
					resultSet.close();
				} catch (SQLException e) {
				}
				resultSet = null;
			}
			if (preparedStatement != null) {
				try {
					preparedStatement.close();
				} catch (SQLException e) {
				}
				preparedStatement = null;
			}			
		}

	}


	public static void insertRecord(Connection conn,String sessid) throws SQLException {		
		PreparedStatement preparedStatement = null;
		ResultSet resultSet = null;
		String sql = "select FLUSRID,WRKSTN from T56M1XXX where SESSID=?";
		try {			
			preparedStatement = conn.prepareStatement(sql);
			preparedStatement.setInt(1, Integer.parseInt(sessid));
			resultSet = preparedStatement.executeQuery();
			if (resultSet.next()) {
				String userid = resultSet.getString("FLUSRID");
				if(userid.length()>=10){
					userid=userid.substring(0,10);
				}
				String workstation = resultSet.getString("WRKSTN");
				preparedStatement = conn
						.prepareStatement("INSERT INTO T60M0XXX(FLUSRID,ACTDATE,ACTTIME,ACTTYPE,INPUSER,APPUSER,INPDATE,INPTIME,APPDATE,APPTIME,REMARK,WRKSTAN) values(?,?,?,?,?,?,?,?,?,?,?,?)");
				preparedStatement.setString(1, userid);
				Date currentdate = new Date();
				SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
				String dt = sdf.format(currentdate);
				Time time = new Time(currentdate.getTime());
				SimpleDateFormat timedf = new SimpleDateFormat("HHmmss");
				//String timedt = timedf.format(time)+"00";
				String timedt = timedf.format(time);
				preparedStatement.setInt(2,Integer.parseInt(dt));

				preparedStatement.setInt(3, Integer.parseInt(timedt));
				preparedStatement.setString(4, "2");
				preparedStatement.setString(5, " ");
				preparedStatement.setString(6, " ");
				preparedStatement.setInt(7, Integer.parseInt(dt));
				preparedStatement.setInt(8, Integer.parseInt(timedt));
				preparedStatement.setInt(9, Integer.parseInt(dt));
				preparedStatement.setInt(10, Integer.parseInt(timedt));
				preparedStatement.setString(11, " ");
				preparedStatement.setString(12, workstation);
				preparedStatement.execute();
				log.debug("userid:"+userid+","+"dt:"+dt+","+"timedt:"+timedt+","+"workstation"+workstation);
				
			}
		}  finally {
			if (resultSet != null) {
				try {
					resultSet.close();
				} catch (SQLException e) {
				}
				resultSet = null;
			}
			if (preparedStatement != null) {
				try {
					preparedStatement.close();
				} catch (SQLException e) {
				}
				preparedStatement = null;
			}
		
		}

	}

	private void deleteFile(String sessionId) {
		String path = "TTY/" + sessionId + "/LDAMAP.DAT";
		boolean flag = (new File(path)).delete();
		path = "TTY/" + sessionId + "/ONLINE.DAT";
		flag = (new File(path)).delete();
	}
	
	private void destroyUserProcess(User user){		
		//Process proc = (Process)user.getProcess().get();
		Process proc = user.getProcess();
		if (proc!=null){
			proc.destroy();
			proc = null;
		}
	}
	
}

⌨️ 快捷键说明

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