📄 signoffservice.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 + -