knu project
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

446 lines
43 KiB

package kr.co.kihyun.beans.batch;
import java.sql.*;
import java.io.ByteArrayOutputStream;
import java.io.ByteArrayInputStream;
import java.io.PrintWriter;
import java.util.Arrays;
import java.sql.Blob;
import java.sql.PreparedStatement;
import java.util.Calendar;
import java.util.Collections;
import java.util.Date;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import kr.co.kihyun.db.DBManager;
import kr.co.kihyun.db.DBManagerCmcp;
public class GroupConinfoUpConsol extends DBManagerCmcp {
private ResultSet rs = null;
private int count = 0;
PreparedStatement pstmt = null;
Statement stmt = null;
PrintWriter out=null;
public void updateMoumiDept() {
StringBuilder sql = new StringBuilder(250);
Calendar oCalendar = Calendar.getInstance( ); // 현재 날짜/시간 등의 각종 정보 얻기
Integer yyCompare = oCalendar.get(Calendar.YEAR);
Integer monCompare = (oCalendar.get(Calendar.MONTH) + 1);
Integer dayCompare = oCalendar.get(Calendar.DAY_OF_MONTH);
Integer hourCompare = oCalendar.get(Calendar.HOUR_OF_DAY);
String dateCompare = Integer.toString(yyCompare)+"-"+Integer.toString(monCompare)+"-"+Integer.toString(dayCompare)+" "+"01:00:00";//2012-07-01 01:00:00
try {
//out = res.getWriter();
sql.append("MERGE INTO MOUMI_DEPT A \n");
sql.append("USING ( \n");
sql.append(" SELECT TREE1.ORG_CODE AS ID \n");
sql.append(" , TREE1.ATPT_OFCDC_ORG_CODE AS ROOT_DEPT \n");
sql.append(" , NULL AS HANDY_ID \n");
sql.append(" , TREE1.KRA_ORG_NM AS NAME \n");
sql.append(" , NULL AS ADDRESS \n");
sql.append(" , DETAIL.ORG_TELNO AS PHONE \n");
sql.append(" , TREE1.ORG_CODE AS PASSCODE \n");
sql.append(" , NULL AS RECO_IMG \n");
sql.append(" , 2 AS SYS_AUTH, TREE1.STDIL_SNO AS PRIORITY \n");
sql.append(" , CASE \n");
sql.append(" WHEN MASTER.ORG_CODE LIKE '%00000001' OR MASTER.ORG_CODE LIKE '%00000000' THEN NULL \n");
sql.append(" ELSE TREE1.UPPER_ORG_CODE \n");
sql.append(" END AS UPPER_DEPT \n");
/*직속기관(INSTT_CLSF_CODE='4')이고 부서가 아닌 경우 organ코드에 자신의 부서코드를 저장 */
sql.append(" , CASE \n");
sql.append(" WHEN MASTER.INSTT_CLSF_CODE = '4' AND MASTER.JU_ORG_INSTT_CLSF_CODE <> '4' THEN MASTER.ORG_CODE \n");
sql.append(" WHEN MASTER.ORG_CODE = 'A000000001' THEN 'A000000001' \n");
sql.append(" ELSE TREE1.JU_ORG_CODE \n");
sql.append(" END AS ORGAN \n");
sql.append(" , NULL AS SEC_ID \n");
sql.append(" , CHAR(0) AS SEQNUM \n");
sql.append(" , CASE WHEN MASTER.ORG_CODE IS NULL THEN CHAR('N') ELSE CHAR('Y') END AS SEL_TYPE \n");
/*조직상세 테이블에서 부서 사용유무(ORG_UON)를 사용중('Y')이면 'N'으로 미사용('N')이면 'Y'로 연계 */
sql.append(" , CASE WHEN TREE1.ORG_UON = 'Y' AND (SCHOOL.ABSCH_YN != 'Y' OR SCHOOL.ABSCH_YN IS NULL) THEN 'N' \n");
sql.append(" ELSE 'Y' END AS IS_OUT \n");
sql.append(" , NULL AS LOCATION \n");
sql.append(" , CASE WHEN MASTER.SCHUL_KND_SC_CODE >= '25' THEN 5 ELSE INTEGER(TRIM(MASTER.SCHUL_KND_SC_CODE)) END AS GRADE \n");
sql.append(" , INTEGER(TRIM(MASTER.FOND_SC_CODE)) AS FOUNDATION \n");
sql.append(" FROM \n");
sql.append(" TN_SYMOCMOM001 TREE1 LEFT JOIN TC_SYMOCMOC000 MASTER ON MASTER.ORG_CODE = TREE1.ORG_CODE, \n");
sql.append(" TN_SYMOCMOM001 TREE2 LEFT JOIN TN_SYMOCMOC001 DETAIL ON DETAIL.ORG_CODE = TREE2.ORG_CODE, \n");
sql.append(" TN_SYMOCMOM001 TREE3 LEFT JOIN TN_SYMOCMSI001 SCHOOL ON SCHOOL.ORG_CODE = TREE3.ORG_CODE \n");
sql.append(" WHERE \n");
sql.append(" TREE1.ORG_CODE = TREE2.ORG_CODE \n");
sql.append(" AND TREE1.ORG_CODE = TREE3.ORG_CODE \n");
sql.append(" AND TREE1.ORG_BUSN_CODE = TREE2.ORG_BUSN_CODE \n");
sql.append(" AND TREE1.ORG_BUSN_CODE = TREE3.ORG_BUSN_CODE \n");
sql.append(" AND TREE1.ORG_UON = TREE2.ORG_UON \n");
sql.append(" AND TREE1.ORG_UON = TREE3.ORG_UON \n");
sql.append(" AND TREE1.APPLC_BEGIN_YMD = TREE2.APPLC_BEGIN_YMD \n");
sql.append(" AND TREE1.APPLC_END_YMD = TREE2.APPLC_END_YMD \n");
sql.append(" AND TREE1.APPLC_BEGIN_YMD = TREE3.APPLC_BEGIN_YMD \n");
sql.append(" AND TREE1.APPLC_END_YMD = TREE3.APPLC_END_YMD \n");
sql.append(" AND TREE1.ORG_BUSN_CODE = 'SYM00' \n");
//sql.append(" AND TREE1.ORG_UON = 'Y' \n");
/* 기관 구분코드에서 부서와 비공식기관인 경우에만 조회 */
sql.append(" AND TREE1.ORG_SC_CODE IN (1,3) \n");
sql.append(" AND TREE1.APPLC_BEGIN_YMD <= TO_CHAR(SYSDATE, 'YYYYMMDD') \n");
sql.append(" AND TREE1.APPLC_END_YMD >= TO_CHAR(SYSDATE, 'YYYYMMDD') \n");
/* 최종 데이타조회 쿼리 */
sql.append(" AND TREE1.APPLC_BEGIN_YMD=( \n");
sql.append(" SELECT \n");
sql.append(" MAX(TREE4.APPLC_BEGIN_YMD) \n");
sql.append(" FROM \n");
sql.append(" TN_SYMOCMOM001 TREE4 LEFT JOIN TC_SYMOCMOC000 MASTER ON MASTER.ORG_CODE = TREE1.ORG_CODE, \n");
sql.append(" TN_SYMOCMOM001 TREE5 LEFT JOIN TN_SYMOCMOC001 DETAIL ON DETAIL.ORG_CODE = TREE2.ORG_CODE, \n");
sql.append(" TN_SYMOCMOM001 TREE6 LEFT JOIN TN_SYMOCMSI001 SCHOOL ON SCHOOL.ORG_CODE = TREE3.ORG_CODE \n");
sql.append(" WHERE \n");
sql.append(" TREE4.ORG_CODE = TREE5.ORG_CODE \n");
sql.append(" AND TREE4.ORG_CODE = TREE6.ORG_CODE \n");
sql.append(" AND TREE4.ORG_BUSN_CODE = TREE5.ORG_BUSN_CODE \n");
sql.append(" AND TREE4.ORG_BUSN_CODE = TREE6.ORG_BUSN_CODE \n");
sql.append(" AND TREE4.ORG_UON = TREE5.ORG_UON \n");
sql.append(" AND TREE4.ORG_UON = TREE6.ORG_UON \n");
sql.append(" AND TREE4.APPLC_BEGIN_YMD = TREE5.APPLC_BEGIN_YMD \n");
sql.append(" AND TREE4.APPLC_END_YMD = TREE5.APPLC_END_YMD \n");
sql.append(" AND TREE4.APPLC_BEGIN_YMD = TREE6.APPLC_BEGIN_YMD \n");
sql.append(" AND TREE4.APPLC_END_YMD = TREE6.APPLC_END_YMD \n");
sql.append(" AND TREE4.ORG_BUSN_CODE = 'SYM00' \n");
sql.append(" AND TREE4.ORG_SC_CODE IN (1,3) \n");
sql.append(" AND TREE4.APPLC_BEGIN_YMD <= TO_CHAR(SYSDATE, 'YYYYMMDD') \n");
sql.append(" AND TREE4.APPLC_END_YMD >= TO_CHAR(SYSDATE, 'YYYYMMDD') \n");
sql.append(" AND TREE1.ORG_CODE=TREE4.ORG_CODE \n");
sql.append(" ) \n");
sql.append(") B \n");
sql.append("ON (A.ID = B.ID) \n");
sql.append("WHEN NOT MATCHED THEN \n");
sql.append(" INSERT ( \n");
sql.append(" A.ID, \n");
sql.append(" A.ROOT_DEPT, \n");
sql.append(" A.HANDY_ID, \n");
sql.append(" A.NAME, \n");
sql.append(" A.ADDR, \n");
sql.append(" A.PHONE, \n");
sql.append(" A.PASSCODE, \n");
sql.append(" A.RECO_IMG, \n");
sql.append(" A.SYS_AUTH, \n");
sql.append(" A.PRIORITY, \n");
sql.append(" A.UPPER_DEPT, \n");
sql.append(" A.ORGAN, \n");
sql.append(" A.SEC_ID, \n");
sql.append(" A.SEQNUM, \n");
sql.append(" A.SEL_TYPE, \n");
sql.append(" A.IS_OUT, \n");
sql.append(" A.LOCATION, \n");
sql.append(" A.GRADE, \n");
sql.append(" A.FOUNDATION \n");
sql.append(" ) \n");
sql.append(" VALUES ( \n");
sql.append(" B.ID, \n");
sql.append(" B.ROOT_DEPT, \n");
sql.append(" B.HANDY_ID, \n");
sql.append(" B.NAME, \n");
sql.append(" B.ADDRESS, \n");
sql.append(" B.PHONE, \n");
sql.append(" B.PASSCODE, \n");
sql.append(" B.RECO_IMG, \n");
sql.append(" B.SYS_AUTH, \n");
sql.append(" B.PRIORITY, \n");
sql.append(" B.UPPER_DEPT, \n");
sql.append(" B.ORGAN, \n");
sql.append(" B.SEC_ID, \n");
sql.append(" B.SEQNUM, \n");
sql.append(" B.SEL_TYPE, \n");
sql.append(" B.IS_OUT, \n");
sql.append(" B.LOCATION, \n");
sql.append(" B.GRADE, \n");
sql.append(" B.FOUNDATION \n");
sql.append(") \n");
sql.append("WHEN MATCHED THEN UPDATE SET \n");
sql.append("A.ID = B.ID, \n");
sql.append("A.ROOT_DEPT = B.ROOT_DEPT, \n");
sql.append("A.HANDY_ID = B.HANDY_ID, \n");
sql.append("A.NAME = B.NAME, \n");
sql.append("A.ADDR = B.ADDRESS, \n");
sql.append("A.PHONE = B.PHONE, \n");
sql.append("A.PASSCODE = B.PASSCODE, \n");
sql.append("A.RECO_IMG = B.RECO_IMG, \n");
sql.append("A.SYS_AUTH = B.SYS_AUTH, \n");
sql.append("A.PRIORITY = B.PRIORITY, \n");
sql.append("A.UPPER_DEPT = B.UPPER_DEPT, \n");
sql.append("A.ORGAN = B.ORGAN, \n");
sql.append("A.SEC_ID = B.SEC_ID, \n");
sql.append("A.SEQNUM = B.SEQNUM, \n");
sql.append("A.SEL_TYPE = B.SEL_TYPE, \n");
sql.append("A.IS_OUT = B.IS_OUT, \n");
sql.append("A.LOCATION = B.LOCATION, \n");
sql.append("A.GRADE = B.GRADE, \n");
sql.append("A.FOUNDATION = B.FOUNDATION \n");
System.out.print("::::updateMoumiDept::::\n"+sql.toString());
int iSuccessCount = execUpdate(sql.toString());
System.out.println(":::: updateMoumiDept ::::");
System.out.println(":::: execute date : " + new Date());
System.out.println(":::: success count : " + iSuccessCount);
return;
} catch (SQLException sqlEx) {
throw new RuntimeException(sqlEx);
} catch (Exception ex) {
throw new RuntimeException(ex);
} finally {
//close(rs);
//execClose();
try {
if(rs!=null) {rs.close();}
if(stmt!=null) {stmt.close();}
if(con!=null) {con.close();}
} catch (Exception e) {
//31.오류 상황 대응 부재_CWE-390 Add by YOUNGJUN,CHO
e.printStackTrace();
//++++++++++++++++++++++++++++++++++++++++++++++++
}
}
}
public void updateMoumiMuser() {
StringBuilder sql = new StringBuilder(250);
Calendar oCalendar = Calendar.getInstance( ); // 현재 날짜/시간 등의 각종 정보 얻기
Integer yyCompare = oCalendar.get(Calendar.YEAR);
Integer monCompare = (oCalendar.get(Calendar.MONTH) + 1);
Integer dayCompare = oCalendar.get(Calendar.DAY_OF_MONTH);
Integer hourCompare = oCalendar.get(Calendar.HOUR_OF_DAY);
String dateCompare = Integer.toString(yyCompare)+"-"+Integer.toString(monCompare)+"-"+Integer.toString(dayCompare)+" "+"01:00:00";//2012-07-01 01:00:00
try {
sql.append("MERGE INTO MOUMI_MUSER A USING ( \n");
sql.append(" SELECT \n");
sql.append(" US.USRID AS ID \n");
sql.append(" , VARCHAR('1') AS PASSWD \n");
sql.append(" , US.USER_NM_ENCPT AS NAME \n");
sql.append(" , NULL AS SL_NO_1 \n");
sql.append(" , NULL AS SL_NO_2 \n");
sql.append(" , US.EMAIL_ADRES AS EMAIL \n");
sql.append(" , US.OFFM_TELNO AS PHONE \n");
sql.append(" , NULL AS CELL_PHONE \n");
sql.append(" , CASE WHEN US.ALL_MASTR_YN = 'Y' OR US.MNGR_YN = 'Y' THEN 9 \n");
sql.append(" WHEN GR.INSTT_CLSF_CODE <> '5' AND USER_SC_CODE = '6' THEN 7 \n");
sql.append(" WHEN GR.INSTT_CLSF_CODE = '5' AND USER_SC_CODE = '6' THEN 5 \n");
sql.append(" ELSE 2 END AS SYS_AUTH \n");
sql.append(" , CASE WHEN US.USE_POSBL_YN = 'Y' THEN CHAR('N') ELSE CHAR('Y') END AS DEL_TYPE \n");
sql.append(" , DT.ORG_CODE AS DEPT_ID \n");
sql.append(" , 0 AS PRIORITY \n");
sql.append(" , NULL AS DUTY_NAME \n");
sql.append(" , NULL AS GW_ID \n");
sql.append(" , TIMESTAMP('1970-01-01') AS DEL_DATE \n");
sql.append(" , US.P_NO AS EMP_CODE \n");
sql.append(" , NULL AS ROLES \n");
sql.append(" , 'N' AS MOD_YN \n"); /*인사이동 유무를 default로 N으로 저장 */
sql.append(" FROM \n");
sql.append(" TN_SYMUSMUM001 US \n");
sql.append(" , TN_SYMOCMOC001 DT \n");
sql.append(" , TC_SYMOCMOC000 GR \n");
sql.append(" WHERE \n");
sql.append(" US.PSITN_ORG_CODE = DT.ORG_CODE \n");
sql.append(" AND DT.ORG_CODE = GR.ORG_CODE \n");
sql.append(" ) B \n");
sql.append(" ON (A.ID = B.ID ) WHEN NOT MATCHED THEN \n");
sql.append(" INSERT ( \n");
sql.append(" A.ID \n");
sql.append(" , A.PASSWD \n");
sql.append(" , A.NAME \n");
sql.append(" , A.SL_NO_1 \n");
sql.append(" , A.SL_NO_2 \n");
sql.append(" , A.EMAIL \n");
sql.append(" , A.PHONE \n");
sql.append(" , A.CELL_PHONE \n");
sql.append(" , A.SYS_AUTH \n");
sql.append(" , A.DEL_TYPE \n");
sql.append(" , A.DEPT_ID \n");
sql.append(" , A.PRIORITY \n");
sql.append(" , A.DUTY_NAME \n");
sql.append(" , A.GW_ID \n");
sql.append(" , A.DEL_DATE \n");
sql.append(" , A.EMP_CODE \n");
sql.append(" , A.ROLES \n");
sql.append(" , A.MOD_YN \n");
sql.append(" ) \n");
sql.append(" VALUES ( \n");
sql.append(" B.ID \n");
sql.append(" , B.PASSWD \n");
sql.append(" , B.NAME \n");
sql.append(" , B.SL_NO_1 \n");
sql.append(" , B.SL_NO_2 \n");
sql.append(" , B.EMAIL \n");
sql.append(" , B.PHONE \n");
sql.append(" , B.CELL_PHONE \n");
sql.append(" , B.SYS_AUTH \n");
sql.append(" , B.DEL_TYPE \n");
sql.append(" , B.DEPT_ID \n");
sql.append(" , B.PRIORITY \n");
sql.append(" , B.DUTY_NAME \n");
sql.append(" , B.GW_ID \n");
sql.append(" , B.DEL_DATE \n");
sql.append(" , B.EMP_CODE \n");
sql.append(" , B.ROLES \n");
sql.append(" , B.MOD_YN \n");
sql.append(" ) \n");
sql.append(" WHEN MATCHED AND A.DEPT_ID=B.DEPT_ID THEN \n");
sql.append(" UPDATE SET \n");
sql.append(" A.ID = B.ID \n");
sql.append(" , A.PASSWD = B.PASSWD \n");
sql.append(" , A.NAME = B.NAME \n");
sql.append(" , A.SL_NO_1 = B.SL_NO_1 \n");
sql.append(" , A.SL_NO_2 = B.SL_NO_2 \n");
sql.append(" , A.CELL_PHONE = B.CELL_PHONE \n");
sql.append(" , A.DEL_TYPE = B.DEL_TYPE \n");
sql.append(" , A.DEPT_ID = B.DEPT_ID \n");
sql.append(" , A.PRIORITY = B.PRIORITY \n");
sql.append(" , A.DUTY_NAME = B.DUTY_NAME \n");
sql.append(" , A.GW_ID = B.GW_ID \n");
sql.append(" , A.DEL_DATE = B.DEL_DATE \n");
sql.append(" , A.EMP_CODE = B.EMP_CODE \n");
sql.append(" , A.ROLES = B.ROLES \n");
sql.append(" , A.MOD_YN = 'N' \n"); /*인사이동이 발생한 경우 부서 변경시 Y로 update */
/* ---------------------------------------------------------------------------------------------------------------- */
/* | 겸임사용자 | 인사이동 | 겸임부서선택 변경 | A.DEPT_ID != NEIS부서 | A.ORIGN_DEPT_ID != NEIS부서 | 'AND' 결과 | */
/* ---------------------------------------------------------------------------------------------------------------- */
/* | X | X | 해당없음 | FALSE | TRUE | FALSE | */
/* | X | O | 해당없음 | TRUE | TRUE | TRUE | */
/* | O | X | X | FALSE | FALSE | FALSE | */
/* | O | X | O | TRUE | FALSE | FALSE | */
/* | O | O | X | TRUE | TRUE | TRUE | */
/* | O | O | O | TRUE | TRUE | TRUE | */
/* ---------------------------------------------------------------------------------------------------------------- */
sql.append(" WHEN MATCHED \n");
sql.append(" AND A.DEPT_ID != B.DEPT_ID \n");
sql.append(" AND (A.ORIGN_DEPT_ID IS NULL OR A.ORIGN_DEPT_ID != B.DEPT_ID) \n");
sql.append(" THEN \n");
sql.append(" UPDATE SET \n");
sql.append(" A.ID = B.ID \n");
sql.append(" , A.PASSWD = B.PASSWD \n");
sql.append(" , A.SYS_AUTH = B.SYS_AUTH \n"); /*인사이동이 발생한 경우 나이스의 권한으로 update */
sql.append(" , A.NAME = B.NAME \n");
sql.append(" , A.SL_NO_1 = B.SL_NO_1 \n");
sql.append(" , A.SL_NO_2 = B.SL_NO_2 \n");
sql.append(" , A.CELL_PHONE = B.CELL_PHONE \n");
sql.append(" , A.DEL_TYPE = B.DEL_TYPE \n");
sql.append(" , A.DEPT_ID = B.DEPT_ID \n");
sql.append(" , A.PRIORITY = B.PRIORITY \n");
sql.append(" , A.DUTY_NAME = B.DUTY_NAME \n");
sql.append(" , A.GW_ID = B.GW_ID \n");
sql.append(" , A.DEL_DATE = B.DEL_DATE \n");
sql.append(" , A.EMP_CODE = B.EMP_CODE \n");
sql.append(" , A.ROLES = B.ROLES \n");
sql.append(" , A.MOD_YN = 'N' \n"); /*인사이동이 발생한 경우 부서 변경시 Y로 update */
sql.append(" , A.ORIGN_DEPT_ID = NULL \n"); /*인사이동이 발생한 경우 원소속 부서를 NULL 로 update */
sql.append(" WHEN MATCHED \n");
sql.append(" AND A.DEPT_ID != B.DEPT_ID \n");
sql.append(" AND A.ORIGN_DEPT_ID = B.DEPT_ID \n");
sql.append(" THEN \n");
sql.append(" UPDATE SET \n");
sql.append(" A.ID = B.ID \n");
sql.append(" , A.DEL_TYPE = B.DEL_TYPE \n");
System.out.print("\n::::updateMoumiMuser::::\n"+sql.toString());
int iSuccessCount = execUpdate(sql.toString());
System.out.println(":::: updateMoumiMuser ::::");
System.out.println(":::: execute date : " + new Date());
System.out.println(":::: success count : " + iSuccessCount);
return;
} catch (SQLException sqlEx) {
throw new RuntimeException(sqlEx);
} catch (Exception ex) {
throw new RuntimeException(ex);
} finally {
//close(rs);
//execClose();
try {
if(rs!=null) {rs.close();}
if(stmt!=null) {stmt.close();}
if(con!=null) {con.close();}
} catch (Exception e) {
//31.오류 상황 대응 부재_CWE-390 Add by YOUNGJUN,CHO
e.printStackTrace();
//++++++++++++++++++++++++++++++++++++++++++++++++
}
}
}
/*
기존 부서 전체의 삭제타입을 수정
*/
public void updateDelMoumiDept(){
StringBuilder sql = new StringBuilder(250);
try{
sql.append(" UPDATE MOUMI_DEPT SET IS_OUT='Y' ");
System.out.print("\n::::DelMoumiMuser::::\n"+sql.toString());
int iSuccessCount = execUpdate(sql.toString());
System.out.println(":::: updateDelMoumiDept delType ::::");
System.out.println(":::: execute date : " + new Date());
System.out.println(":::: success count : " + iSuccessCount);
return;
} catch (SQLException sqlEx) {
throw new RuntimeException(sqlEx);
} catch (Exception ex) {
throw new RuntimeException(ex);
} finally {
close(rs);
execClose();
}
}
/*
기존 사용자 전체의 삭제타입을 수정
*/
public void updateDelMoumiMuser(){
StringBuilder sql = new StringBuilder(250);
try{
sql.append(" UPDATE MOUMI_MUSER SET DEL_TYPE='Y' \n ");
int iSuccessCount = execUpdate(sql.toString());
System.out.println(":::: updateDelMoumimUuer delType ::::");
System.out.println(":::: execute date : " + new Date());
System.out.println(":::: success count : " + iSuccessCount);
return;
} catch (SQLException sqlEx) {
throw new RuntimeException(sqlEx);
} catch (Exception ex) {
throw new RuntimeException(ex);
} finally {
close(rs);
execClose();
}
}
}