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.
652 lines
33 KiB
652 lines
33 KiB
package kr.co.kihyun.beans.batch; |
|
|
|
import java.io.FileNotFoundException; |
|
import java.io.IOException; |
|
import java.io.PrintWriter; |
|
import java.security.cert.X509Certificate; |
|
import java.sql.PreparedStatement; |
|
import java.sql.ResultSet; |
|
import java.sql.SQLException; |
|
import java.sql.Statement; |
|
import java.util.Arrays; |
|
import java.util.Calendar; |
|
import java.util.Map; |
|
|
|
import javax.net.ssl.SSLContext; |
|
|
|
import org.apache.http.conn.ssl.SSLConnectionSocketFactory; |
|
import org.apache.http.conn.ssl.TrustStrategy; |
|
import org.apache.http.impl.client.CloseableHttpClient; |
|
import org.apache.http.impl.client.HttpClients; |
|
import org.json.JSONException; |
|
import org.json.simple.JSONArray; |
|
import org.json.simple.JSONObject; |
|
import org.json.simple.parser.JSONParser; |
|
import org.slf4j.Logger; |
|
import org.slf4j.LoggerFactory; |
|
import org.springframework.core.ParameterizedTypeReference; |
|
import org.springframework.http.HttpEntity; |
|
import org.springframework.http.HttpHeaders; |
|
import org.springframework.http.HttpMethod; |
|
import org.springframework.http.MediaType; |
|
import org.springframework.http.client.HttpComponentsClientHttpRequestFactory; |
|
import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter; |
|
import org.springframework.web.client.RestTemplate; |
|
|
|
import kr.co.kihyun.db.DBManager; |
|
import kr.co.kihyun.db.FixMeJDOException; |
|
import kr.co.kihyun.lang.MString; |
|
|
|
public class GroupConinfoUp extends DBManager { |
|
|
|
private static final Logger LOG = LoggerFactory.getLogger(GroupConinfoUp.class); |
|
|
|
private ResultSet rs = null; |
|
private int count = 0; |
|
PreparedStatement pstmt = null; |
|
Statement stmt = null; |
|
PrintWriter out = null; |
|
|
|
public void updateMoumiDept() { |
|
|
|
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 |
|
StringBuilder sql = null; |
|
|
|
try { |
|
GroupInfoConnector gic = new GroupInfoConnector(); |
|
int start = 1; |
|
String id; |
|
String rootCode; |
|
String name; |
|
String parentCode; |
|
int iSuccessCount = 0; |
|
sql = getDeptSql(); |
|
|
|
String[] deptArr = null; |
|
while (start == 1 || deptArr.length == 1000) { |
|
deptArr = gic.getDeptFullTextData(start); |
|
|
|
for (int i = 0; i < deptArr.length; i++) { |
|
String[] deptColInfo = deptArr[i].split("§"); |
|
id = deptColInfo[6]; |
|
rootCode = deptColInfo[5]; |
|
name = deptColInfo[7]; |
|
parentCode = deptColInfo[9]; |
|
if ("ROOT".equals(parentCode)) { |
|
parentCode = null; |
|
} |
|
addBatch(sql.toString(), id, name, id, id, rootCode, parentCode); |
|
} |
|
iSuccessCount += execBatch(); |
|
start += 1000; |
|
} |
|
|
|
//LOG.info(":::: 부서 : " + iSuccessCount); |
|
LOG.info("부서 동기화 작업 성공"); |
|
return; |
|
|
|
} catch (SQLException sqlEx) { |
|
LOG.error("\nSQLState - {}\nMySQL Error Code - {}\nmessage - {}\nsql - {}", |
|
new Object[] { sqlEx.getSQLState(), sqlEx.getErrorCode(), sqlEx.getMessage(), sql }); |
|
throw new RuntimeException(sqlEx); |
|
} catch (Exception ex) { |
|
throw new RuntimeException(ex); |
|
} finally { |
|
close(rs); |
|
execClose(); |
|
} |
|
} |
|
|
|
public void updateMoumiMuser() { |
|
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 |
|
String delYn; |
|
StringBuilder sql = null; |
|
|
|
try { |
|
GroupInfoConnector gic = new GroupInfoConnector(); |
|
int start = 1; |
|
String id; |
|
String name; |
|
String deptId; |
|
String dutyName; |
|
int iSuccessCount = 0; |
|
sql = getUserSql(); |
|
|
|
String[] userArr = null; |
|
while (start == 1 || userArr.length == 1000) { |
|
userArr = gic.getUserFullTextData(start); |
|
|
|
for (int i = 0; i < userArr.length; i++) { |
|
String[] userColInfo = userArr[i].split("§"); |
|
id = userColInfo[7]; |
|
name = userColInfo[8]; |
|
deptId = userColInfo[5]; |
|
dutyName = userColInfo[17]; |
|
delYn = "N"; |
|
if (!"1".equals(userColInfo[2])) { |
|
delYn = "Y"; |
|
} |
|
addBatch(sql.toString(), id, name, deptId, delYn, dutyName); |
|
} |
|
iSuccessCount += execBatch(); |
|
start += 1000; |
|
} |
|
|
|
//LOG.info(":::: 사용자 : " + iSuccessCount); |
|
LOG.info("사용자 동기화 작업 성공"); |
|
return; |
|
|
|
} catch (SQLException sqlEx) { |
|
LOG.error("\nSQLState - {}\nMySQL Error Code - {}\nmessage - {}\nsql - {}", |
|
new Object[] { sqlEx.getSQLState(), sqlEx.getErrorCode(), sqlEx.getMessage(), sql }); |
|
throw new RuntimeException(sqlEx); |
|
} catch (Exception ex) { |
|
throw new RuntimeException(ex); |
|
} finally { |
|
close(rs); |
|
execClose(); |
|
} |
|
} |
|
|
|
/* |
|
* 기존 부서 전체의 삭제타입을 수정 |
|
*/ |
|
public void updateDelMoumiDept() { |
|
StringBuilder sql = new StringBuilder(250); |
|
|
|
try { |
|
sql.append(" UPDATE DPMOUOWN.MOUMI_DEPT SET IS_OUT='Y' "); |
|
|
|
int iSuccessCount = execUpdate(sql.toString()); |
|
|
|
LOG.info("부서 사용유무 N으로 변경"); |
|
return; |
|
|
|
} catch (SQLException sqlEx) { |
|
LOG.error("\nSQLState - {}\nMySQL Error Code - {}\nmessage - {}\nsql - {}", |
|
new Object[] { sqlEx.getSQLState(), sqlEx.getErrorCode(), sqlEx.getMessage(), sql }); |
|
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 DPMOUOWN.MOUMI_MUSER SET DEL_TYPE='Y' WHERE ID != 'admin' \n"); |
|
|
|
System.out.print("\n::::DelMoumiMuser::::\n" + sql.toString()); |
|
|
|
int iSuccessCount = execUpdate(sql.toString()); |
|
|
|
//LOG.info(":::: 사용자 사용유무 N으로 변경 : " + iSuccessCount); |
|
LOG.info("사용자 사용유무 N으로 변경"); |
|
return; |
|
|
|
} catch (SQLException sqlEx) { |
|
LOG.error("\nSQLState - {}\nMySQL Error Code - {}\nmessage - {}\nsql - {}", |
|
new Object[] { sqlEx.getSQLState(), sqlEx.getErrorCode(), sqlEx.getMessage(), sql }); |
|
throw new RuntimeException(sqlEx); |
|
} catch (Exception ex) { |
|
throw new RuntimeException(ex); |
|
} finally { |
|
close(rs); |
|
execClose(); |
|
} |
|
} |
|
|
|
public StringBuilder getDeptSql() throws FileNotFoundException, SQLException, FixMeJDOException, IOException { |
|
StringBuilder sql = new StringBuilder(250); |
|
sql.append( "MERGE INTO MOUMI.MOUMI_DEPT A \n"); |
|
sql.append( "USING ( \n"); |
|
sql.append( " SELECT ? AS ID \n"); |
|
sql.append( " , ? AS NAME \n"); |
|
sql.append( " , ? AS ORGAN \n"); |
|
sql.append( " , ? AS PASSCODE \n"); |
|
sql.append( " , ? AS ROOT_DEPT \n"); |
|
sql.append( " , ? AS UPPER_DEPT \n"); |
|
sql.append( " , ? AS UPPER_DEPT FROM DUAL \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.NAME, \n"); |
|
sql.append( " A.ORGAN, \n"); |
|
sql.append( " A.PASSCODE, \n"); |
|
sql.append( " A.ROOT_DEPT, \n"); |
|
sql.append( " A.UPPER_DEPT, \n"); |
|
sql.append( " A.SEL_TYPE, \n"); |
|
sql.append( " A.IS_OUT, \n"); |
|
sql.append( " A.PRIORITY, \n"); |
|
sql.append( " A.SYS_AUTH \n"); |
|
sql.append( " ) \n"); |
|
sql.append( " VALUES ( \n"); |
|
sql.append( " B.ID, \n"); |
|
sql.append( " B.NAME, \n"); |
|
sql.append( " B.ORGAN, \n"); |
|
sql.append( " B.PASSCODE, \n"); |
|
sql.append( " B.ROOT_DEPT, \n"); |
|
sql.append( " B.UPPER_DEPT, \n"); |
|
sql.append( " 'Y', \n"); |
|
sql.append( " 'N', \n"); |
|
sql.append( " 0, \n"); |
|
sql.append( " 2 \n"); |
|
sql.append( ") \n"); |
|
sql.append( "WHEN MATCHED THEN UPDATE SET \n"); |
|
sql.append( "A.ROOT_DEPT = B.ROOT_DEPT, \n"); |
|
sql.append( "A.NAME = B.NAME, \n"); |
|
sql.append( "A.IS_OUT = 'N', \n"); |
|
sql.append( "A.PASSCODE = B.PASSCODE, \n"); |
|
sql.append( "A.ORGAN = B.ORGAN, \n"); |
|
sql.append( "A.UPPER_DEPT = B.UPPER_DEPT \n"); |
|
//setSql(sql); |
|
return sql; |
|
} |
|
|
|
public StringBuilder getUserSql() throws FileNotFoundException, SQLException, FixMeJDOException, IOException { |
|
StringBuilder sql = new StringBuilder(250); |
|
sql.append( "MERGE INTO MOUMI.MOUMI_MUSER A \n"); |
|
sql.append( "USING ( \n"); |
|
sql.append( " SELECT ? AS ID \n"); |
|
sql.append( " , ? AS NAME \n"); |
|
sql.append( " , ? AS DEPT_ID \n"); |
|
sql.append( " , ? AS DEL_TYPE \n"); |
|
sql.append( " , ? AS DUTY_NAME FROM DUAL \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.NAME, \n"); |
|
sql.append( " A.DEPT_ID, \n"); |
|
sql.append( " A.DUTY_NAME, \n"); |
|
sql.append( " A.SYS_AUTH, \n"); |
|
sql.append( " A.PASSWD, \n"); |
|
sql.append( " A.MOD_YN, \n"); |
|
sql.append( " A.DEL_TYPE, \n"); |
|
sql.append( " A.DUAL_POST_YN \n"); |
|
sql.append( " ) \n"); |
|
sql.append( " VALUES ( \n"); |
|
sql.append( " B.ID, \n"); |
|
sql.append( " B.NAME, \n"); |
|
sql.append( " B.DEPT_ID, \n"); |
|
sql.append( " B.DUTY_NAME, \n"); |
|
sql.append( " 2, \n"); |
|
sql.append( " '1', \n"); |
|
sql.append( " 'N', \n"); |
|
sql.append( " 'N', \n"); |
|
sql.append( " 'N' \n"); |
|
sql.append( ") \n"); |
|
sql.append( "WHEN MATCHED THEN UPDATE SET \n"); |
|
sql.append( "A.NAME = B.NAME, \n"); |
|
sql.append( "A.DEPT_ID = B.DEPT_ID, \n"); |
|
sql.append( "A.DEL_TYPE = B.DEL_TYPE, \n"); |
|
sql.append( "A.DUTY_NAME = B.DUTY_NAME \n"); |
|
System.out.println("sql append ==== " + sql ); |
|
setSql(sql); |
|
System.out.println("sql append set sql ==== " + sql ); |
|
return sql; |
|
} |
|
|
|
|
|
public void getUserSync() throws JSONException { |
|
|
|
StringBuilder sql = null; |
|
String scheme = "https"; |
|
|
|
HttpComponentsClientHttpRequestFactory factory = null; |
|
|
|
try { |
|
|
|
|
|
|
|
|
|
//ssl 일 경우 |
|
|
|
if (scheme.contains("https")) { |
|
|
|
TrustStrategy acceptingTrustStrategy = (X509Certificate[] chain, String authType) -> true; |
|
|
|
SSLContext sslContext = org.apache.http.ssl.SSLContexts.custom().loadTrustMaterial(null, acceptingTrustStrategy).build(); |
|
SSLConnectionSocketFactory csf = new SSLConnectionSocketFactory(sslContext); |
|
CloseableHttpClient httpClient = HttpClients.custom().setSSLSocketFactory(csf).build(); |
|
factory = new HttpComponentsClientHttpRequestFactory(httpClient); |
|
System.out.println("factory user=== \n" + factory); |
|
|
|
} else { |
|
|
|
factory = new HttpComponentsClientHttpRequestFactory(); |
|
|
|
} |
|
//factory = new HttpComponentsClientHttpRequestFactory(); |
|
System.out.println("factory 222 ==== " + factory ); |
|
|
|
RestTemplate restTemplate = new RestTemplate(factory); |
|
System.out.println("restTemplate ==== " + restTemplate ); |
|
|
|
String jSon = "";//"{\"pageSize\" : \"5\", \"pageNum\" : \"1\", \"sttsCd\":\"GNFL000300001\"}"; |
|
|
|
HttpHeaders httpHeaders = new HttpHeaders(); |
|
httpHeaders.add("X-KNU-API-KEY", "lJwJUyM9tqxdIISEUndJVmNIydwSAKn1"); |
|
httpHeaders.add("X-KNU-USER-ID", "moumi.web"); |
|
httpHeaders.add("Content-Type","application/json"); |
|
|
|
System.out.println("httpHeaders ==== " + httpHeaders ); |
|
|
|
int pageSize =300; |
|
int totalPages=1; |
|
int iSuccessCount = 0; |
|
String tempJsonString1[]; |
|
String tempJsonString2[]; |
|
System.out.println("sql 0000000 ==== " + sql ); |
|
//sql = getUserSql(); |
|
System.out.println("sql 1111111 ==== " + sql ); |
|
for(int page=1; page <= totalPages; page ++) { |
|
|
|
jSon = "{\"pageSize\" : \""+pageSize+"\", \"pageNum\" : \""+page+"\", \"sttsCd\":\"GNFL000300001\"}"; |
|
System.out.println("jSon ==== " + jSon ); |
|
|
|
HttpEntity<String> httpEntity = new HttpEntity<String>(jSon,httpHeaders); |
|
System.out.println("httpEntity ==== " + httpEntity ); |
|
MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter = new MappingJackson2HttpMessageConverter(); |
|
System.out.println("mappingJackson2HttpMessageConverter ==== " + mappingJackson2HttpMessageConverter ); |
|
mappingJackson2HttpMessageConverter.setSupportedMediaTypes(Arrays.asList(MediaType.APPLICATION_JSON, MediaType.APPLICATION_OCTET_STREAM)); |
|
restTemplate.getMessageConverters().add(mappingJackson2HttpMessageConverter); |
|
|
|
System.out.println("restTemplate ==== " + restTemplate ); |
|
//운영: https://cmmnn-api.knu.ac.kr:9080/openapi/cmmnn/support/user/selectlistidntcno |
|
Map<String, Object> result1 = restTemplate.exchange("http://dev-cmmnn-api.knu.ac.kr:9080/openapi/cmmnn/support/user/selectlistidntcno" |
|
, HttpMethod.POST |
|
, httpEntity |
|
, new ParameterizedTypeReference<Map<String, Object>>() {} |
|
|
|
).getBody(); |
|
|
|
result1.forEach((key, value) |
|
-> System.out.println(">>>>>result1 key: " + key + ", value: " + value)); |
|
|
|
if ((int)result1.get("statusCode")==200) { |
|
String dutyName = null;//교수 교원 |
|
String id = null; |
|
String deptId = null;//DEPT_ID K10 |
|
String name = null;//NAME |
|
String passwd = null;//PASSWD 1 |
|
String sysAuth = null;//SYS_AUTH 2 |
|
String email = null;//EMAIL |
|
|
|
String jsonString1 = result1.get("data").toString(); |
|
|
|
//데이터를 json형식으로 치환 |
|
jsonString1 = jsonString1.replace("=", "\":\""); |
|
jsonString1 = jsonString1.replace("{", "{\""); |
|
jsonString1 = jsonString1.replace(", ", "\", \""); |
|
|
|
jsonString1 = jsonString1.replace("\"yhchoi@knu.ac.kr\", \"228choi@hanmail.net\"","\"yhchoi@knu.ac.kr\""); |
|
|
|
jsonString1 = jsonString1.replace("\"{\"", "{\""); |
|
jsonString1 = jsonString1.replace("}\",", "\"},"); |
|
jsonString1 = jsonString1.replace("\"[","["); |
|
jsonString1 = jsonString1.replace("]\"","]"); |
|
jsonString1 = jsonString1.replace("}]","\"}]"); |
|
jsonString1 = jsonString1.replace("}}","\"}}"); |
|
|
|
System.out.println(">>>>>jsonString1: " + jsonString1); |
|
//외국인들 한글 이름에 포함된 ',' 삭제 |
|
tempJsonString1 = jsonString1.split(", \"itttnCd\""); |
|
System.out.println(">>>>>tempJsonString1 length: " + tempJsonString1.length); |
|
|
|
|
|
for(int j=0; j<tempJsonString1.length-1; j++ ) { |
|
System.out.println(">>>>>tempJsonString1:["+j+"]"+ tempJsonString1[j]); |
|
tempJsonString2 = tempJsonString1[j].split("\"korNm\":"); |
|
System.out.println(">>>>>대상"+ tempJsonString2[1]); |
|
System.out.println(">>>>>치환"+ tempJsonString2[1].replace("\", \"", " ")); |
|
jsonString1 = jsonString1.replace(tempJsonString2[1], tempJsonString2[1].replace("\", \"", " ")); |
|
} |
|
|
|
System.out.println(">>>>>jsonString1: " + jsonString1); |
|
JSONObject jsonObject = new JSONObject(); |
|
|
|
JSONParser parser = new JSONParser(); |
|
jsonObject = (JSONObject)parser.parse(jsonString1); |
|
JSONArray jsonArray1 = (JSONArray)jsonObject.get("data"); |
|
Map paging = (Map)jsonObject.get("paging"); |
|
|
|
System.out.println("paging : " +paging); |
|
if(page==1) { |
|
totalPages = Integer.parseInt(paging.get("totalPages").toString()); |
|
} |
|
for (Object value : jsonArray1) { |
|
JSONObject v = (JSONObject) value; |
|
|
|
id = MString.checkNull(v.get("userId").toString()); |
|
dutyName = MString.checkNull(v.get("clspsNm").toString()); |
|
deptId = MString.checkNull(v.get("itttnCd").toString()); |
|
name = MString.checkNull(v.get("korNm").toString()); |
|
email = MString.checkNull(v.get("email").toString()); |
|
System.out.println("sttsCd userYN ===== \n" +MString.checkNull(v.get("sttsCd").toString())); |
|
sql = getUserSql(); |
|
//System.out.println("sql>>>>>"+sql); |
|
|
|
System.out.println("userId : [" + id+ |
|
"], dutyName : [" + dutyName+ |
|
"], deptId : [" + deptId+ |
|
"], name : [" + name+ |
|
"], email : [" + email+"]"); |
|
|
|
addBatch(sql.toString(), id, name, deptId, "N", dutyName); |
|
iSuccessCount += execBatch(); |
|
System.out.println("iSuccessCount>>>>>"+iSuccessCount); |
|
break; |
|
} |
|
} |
|
} |
|
} |
|
catch(Exception e) { |
|
System.out.println(e); |
|
e.printStackTrace(); |
|
} |
|
finally { |
|
return; |
|
} |
|
} |
|
|
|
public void getDeptSync() throws JSONException { |
|
|
|
StringBuilder sql = null; |
|
String scheme = "https"; |
|
|
|
HttpComponentsClientHttpRequestFactory factory = null; |
|
|
|
try { |
|
|
|
|
|
//ssl 일 경우 |
|
|
|
if (scheme.contains("https")) { |
|
|
|
TrustStrategy acceptingTrustStrategy = (X509Certificate[] chain, String authType) -> true; |
|
System.out.println("acceptingTrustStrategy dept=== \n" + acceptingTrustStrategy); |
|
SSLContext sslContext = org.apache.http.ssl.SSLContexts.custom().loadTrustMaterial(null, acceptingTrustStrategy).build(); |
|
System.out.println("sslContext dept=== \n" + sslContext); |
|
SSLConnectionSocketFactory csf = new SSLConnectionSocketFactory(sslContext); |
|
System.out.println("csf dept=== \n" + csf); |
|
CloseableHttpClient httpClient = HttpClients.custom().setSSLSocketFactory(csf).build(); |
|
System.out.println("httpClient dept=== \n" + httpClient); |
|
factory = new HttpComponentsClientHttpRequestFactory(httpClient); |
|
System.out.println("factory dept=== \n" + factory); |
|
|
|
} else { |
|
|
|
factory = new HttpComponentsClientHttpRequestFactory(); |
|
|
|
} |
|
|
|
RestTemplate restTemplate = new RestTemplate(factory); |
|
|
|
String jSon = ""; |
|
|
|
HttpHeaders httpHeaders = new HttpHeaders(); |
|
httpHeaders.add("X-KNU-API-KEY", "lJwJUyM9tqxdIISEUndJVmNIydwSAKn1"); |
|
httpHeaders.add("X-KNU-USER-ID", "moumi.web"); |
|
httpHeaders.add("Content-Type","application/json"); |
|
|
|
int pageSize =1; |
|
int totalPages=1; |
|
int iSuccessCount = 0; |
|
String tempJsonString1[]; |
|
String tempJsonString2[]; |
|
String rightKorNm = null; |
|
String wrongKorNm = null; |
|
sql = getDeptSql(); |
|
// for(int page=1; page <= totalPages; page ++) { |
|
jSon = "{\"pageSize\" : \""+pageSize+"\", \"pageNum\" : \"1\"}"; |
|
|
|
HttpEntity<String> httpEntity = new HttpEntity<String>(jSon,httpHeaders); |
|
MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter = new MappingJackson2HttpMessageConverter(); |
|
mappingJackson2HttpMessageConverter.setSupportedMediaTypes(Arrays.asList(MediaType.APPLICATION_JSON, MediaType.APPLICATION_OCTET_STREAM)); |
|
restTemplate.getMessageConverters().add(mappingJackson2HttpMessageConverter); |
|
|
|
System.out.println("httpEntity ==== " + httpEntity ); |
|
//운영: https://cmmnn-api.knu.ac.kr:9080/openapi/cmmnn/support/itttn/selectlistitttn |
|
Map<String, Object> result1 = restTemplate.exchange("http://dev-cmmnn-api.knu.ac.kr:9080/openapi/cmmnn/support/itttn/selectlistitttn" |
|
, HttpMethod.POST |
|
, httpEntity |
|
, new ParameterizedTypeReference<Map<String, Object>>() {} |
|
|
|
).getBody(); |
|
|
|
|
|
result1.forEach((key, value) |
|
-> System.out.println(">>>>>result1 key: " + key + ", value: " + value)); |
|
|
|
if ((int)result1.get("statusCode")==200) { |
|
String id = null; //itttnCd |
|
String name = null; //itttnNm |
|
String priority = null; //lvl |
|
String organ = null; //cmpsClscd |
|
String passCode = null; // |
|
String rootDept = null; //0 |
|
String upperDept= null; //upperItttnCd |
|
String selType = null; //dprtmUseSttcd: CMST001100001(사용) Y, N |
|
String isOut = null; //N |
|
String seqNum = null; //0 |
|
String sysAuth = null; //2 |
|
|
|
String jsonString1 = result1.get("data").toString(); |
|
|
|
//데이터를 json형식으로 치환 |
|
jsonString1 = jsonString1.replace("=", "\":\""); |
|
jsonString1 = jsonString1.replace("{", "{\""); |
|
jsonString1 = jsonString1.replace(", ", "\", \""); |
|
|
|
jsonString1 = jsonString1.replace("\"{\"", "{\""); |
|
jsonString1 = jsonString1.replace("}\",", "\"},"); |
|
jsonString1 = jsonString1.replace("\"[","["); |
|
jsonString1 = jsonString1.replace("]\"","]"); |
|
jsonString1 = jsonString1.replace("}]","\"}]"); |
|
jsonString1 = jsonString1.replace("}}","\"}}"); |
|
|
|
// //외국인들 한글 이름에 포함된 ',' 삭제 |
|
// tempJsonString1 = jsonString1.split(", \"itttnCd\""); |
|
// System.out.println(">>>>>tempJsonString1 length: " + tempJsonString1.length); |
|
// |
|
// |
|
// for(int j=0; j<tempJsonString1.length-1; j++ ) { |
|
// System.out.println(">>>>>tempJsonString1:["+j+"]"+ tempJsonString1[j]); |
|
// tempJsonString2 = tempJsonString1[j].split("\"korNm\":"); |
|
// System.out.println(">>>>>대상"+ tempJsonString2[1]); |
|
// System.out.println(">>>>>치환"+ tempJsonString2[1].replace("\", \"", " ")); |
|
// jsonString1 = jsonString1.replace(tempJsonString2[1], tempJsonString2[1].replace("\", \"", " ")); |
|
// } |
|
//jsonString1="{\"data\":[{\"rowIndex\":\"0\", \"success\":\"false\", \"message\":\"null\", \"pageSize\":\"100\", \"pageNum\":\"1\", \"lvl\":\"1\", \"itttnCd\":\"0\", \"itttnNm\":\"경북대학교(총괄)\", \"hdqrtEdcncSctcd\":\"null\", \"hdqrtEdcncSctcdNm\":\"null\", \"upperItttnNm\":\"null\", \"dprtmLvlRank\":\"1\", \"dprtmSn\":\"1\", \"itttnGrpCd\":\"null\", \"itttnGrpCdNm\":\"null\", \"lwstDprtmYn\":\"null\", \"offclDprtmYn\":\"null\", \"dprtmBeginDt\":\"18991231\", \"dprtmEndDt\":\"99991231\", \"itttnAbbnm\":\"null\", \"otpuItttnNm\":\"null\", \"dprtmUseSttcd\":\"CMST001100001\", \"dprtmUseSttcdNm\":\"사용\", \"cmpsClscd\":\"null\", \"cmpsClscdNm\":\"null\", \"orgnnSctcd\":\"null\", \"orgnnSctcdNm\":\"null\", \"dngtSctcd\":\"null\", \"dngtSctcdNm\":\"null\", \"rmrk\":\"null\", \"upperItttnCd\":\"null\", \"admnsStnrdDtalCdVal\":\"null\", \"dprtnChrceSctcd\":\"null\", \"dprtnChrceSctcdNm\":\"null\", \"rprsnFaxNo\":\"null\", \"rprsnTelno\":\"null\", \"mgmntItttnCd\":\"null\", \"paging\":\"false\", \"rowStatus\":\"R\", \"pageSort\":\"null\"}, {\"rowIndex\":\"0\", \"success\":\"false\", \"message\":\"null\", \"pageSize\":\"100\", \"pageNum\":\"1\", \"lvl\":\"2\", \"itttnCd\":\"01\", \"itttnNm\":\"총장(영문)\", \"hdqrtEdcncSctcd\":\"CMST000900001\", \"hdqrtEdcncSctcdNm\":\"본부\", \"upperItttnNm\":\"경북대학교(총괄)\", \"dprtmLvlRank\":\"2\", \"dprtmSn\":\"1\", \"itttnGrpCd\":\"null\", \"itttnGrpCdNm\":\"null\", \"lwstDprtmYn\":\"null\", \"offclDprtmYn\":\"null\", \"dprtmBeginDt\":\"18991231\", \"dprtmEndDt\":\"99991231\", \"itttnAbbnm\":\"null\", \"otpuItttnNm\":\"null\", \"dprtmUseSttcd\":\"CMST001100001\", \"dprtmUseSttcdNm\":\"사용\", \"cmpsClscd\":\"null\", \"cmpsClscdNm\":\"null\", \"orgnnSctcd\":\"null\", \"orgnnSctcdNm\":\"null\", \"dngtSctcd\":\"null\", \"dngtSctcdNm\":\"null\", \"rmrk\":\"null\", \"upperItttnCd\":\"null\", \"admnsStnrdDtalCdVal\":\"null\", \"dprtnChrceSctcd\":\"null\", \"dprtnChrceSctcdNm\":\"null\", \"rprsnFaxNo\":\"null\", \"rprsnTelno\":\"null\", \"mgmntItttnCd\":\"null\", \"paging\":\"false\", \"rowStatus\":\"R\", \"pageSort\":\"null\"}]}"; |
|
jsonString1="{\"data\":"+jsonString1+"}"; |
|
|
|
System.out.println(">>>>>jsonString11: "+ jsonString1); |
|
|
|
JSONObject jsonObject = new JSONObject(); |
|
|
|
JSONParser parser = new JSONParser(); |
|
jsonObject = (JSONObject)parser.parse(jsonString1); |
|
JSONArray jsonArray1 = (JSONArray)jsonObject.get("data"); |
|
// Map paging = (Map)jsonObject.get("paging"); |
|
|
|
// System.out.println("paging : " +paging); |
|
// if(page==1) { |
|
// totalPages = Integer.parseInt(paging.get("totalPages").toString()); |
|
// } |
|
for (Object value : jsonArray1) { |
|
JSONObject v = (JSONObject) value; |
|
|
|
// String id = null; //itttnCd |
|
// String name = null; //itttnNm |
|
// String organ = null; //cmpsClscd |
|
// String passCode = null; //id |
|
// String rootDept = null; //0 |
|
// String upperDept= null; //upperItttnCd |
|
// String priority = null; //lvl |
|
// String selType = null; //Y |
|
// String isOut = null; //N dprtmUseSttcd:CMST001100001(사용) |
|
// String seqNum = null; //0 |
|
// String sysAuth = null; //2 |
|
id = MString.checkNull(v.get("itttnCd").toString()); |
|
name = MString.checkNull(v.get("itttnNm").toString()); |
|
//priority = v.get("lvl").toString(); |
|
organ = MString.checkNull(v.get("itttnGrpCd").toString()); |
|
passCode = MString.checkNull(v.get("itttnCd").toString()); |
|
rootDept = "0"; |
|
upperDept = MString.checkNull(v.get("upperItttnCd").toString()); |
|
System.out.println("dprtmUseSttcd useYN ===== \n" +MString.checkNull(v.get("dprtmUseSttcd").toString())); |
|
System.out.println("offclDprtmYn regYN ===== \n" +MString.checkNull(v.get("offclDprtmYn").toString())); |
|
if(id.equals("0")) { |
|
organ="0"; |
|
}else if(id.length() > 1){ |
|
organ=id.substring(0,1); |
|
}else { |
|
organ =id; |
|
} |
|
|
|
|
|
System.out.println("id : ["+ id+"]" |
|
+ ", name : [" + name+"]" |
|
+ ", organ : [" + organ+"]" |
|
+ ", passCode : [" + passCode+"]" |
|
+ ", rootDept : [" + rootDept+"]" |
|
+ ", upperDept : [" + upperDept+"]"); |
|
|
|
addBatch(sql.toString(), id, name, organ, passCode, rootDept, upperDept); |
|
iSuccessCount += execBatch(); |
|
System.out.println("iSuccessCount>>>>>"+iSuccessCount); |
|
break; |
|
} |
|
} |
|
} |
|
catch(Exception e) { |
|
System.out.println(e); |
|
} |
|
finally { |
|
return; |
|
} |
|
} |
|
}
|
|
|