공유데이터 작업중

This commit is contained in:
psh 2024-06-07 20:19:48 +09:00
parent c548a9c1e2
commit fd98bb90fc
14 changed files with 437 additions and 3 deletions

View File

@ -0,0 +1,21 @@
package egovframework.com.mtdata.comtrls.mapper;
import egovframework.com.mtdata.comtrls.vo.ComtrlsColVO;
import egovframework.com.mtdata.comtrls.vo.ComtrlsMetaDataVO;
import egovframework.com.mtdata.comtrls.vo.ComtrlsSrcdataVO;
import egovframework.com.mtdata.comtsrcdata.vo.ComtExtrtVO;
import org.egovframe.rte.psl.dataaccess.mapper.Mapper;
@Mapper("ComtrlsdataMapper")
public interface ComtrlsdataMapper {
/**
* 공유데이터의 메타데이터를 [comtrlstrgtmetadata] 테이블에 저장
*
* @param vo
* @return
* @throws Exception
*/
public int insertComtrlsMetadataInfo(ComtrlsMetaDataVO vo) throws Exception;
}

View File

@ -0,0 +1,53 @@
package egovframework.com.mtdata.comtrls.service;
import egovframework.com.mtdata.comtrls.vo.ComtrlsColVO;
import egovframework.com.mtdata.comtrls.vo.ComtrlsMetaDataVO;
import egovframework.com.mtdata.comtrls.vo.ComtrlsSrcdataVO;
public interface ComtrlsdataService {
/**
* 공유데이터의 메타데이터를 [comtrlstrgtmetadata] 테이블에 저장
*
* @param vo
* @return
* @throws Exception
*/
public int insertComtrlsMetadataInfo(ComtrlsMetaDataVO vo) throws Exception;
//
//
// /**
// * 원천데이터를 [comtsrcdata]테이블에 저장
// *
// * @param vo
// * @return
// * @throws Exception
// */
// public int insertComtTabledataInfo(ComtrlsMetaDataVO vo) throws Exception;
//
//
// /**
// * 원천데이터의 컬럼정보 [comtsrcdatacol] 테이블에 저장
// *
// * @param vo
// * @return
// * @throws Exception
// */
// public int insertComtSrcCol(ComtrlsColVO vo) throws Exception;
//
//
// /**
// * test
// *
// * @param vo
// * @return
// * @throws Exception
// */
//
// public int updateDatasrc(ComtrlsSrcdataVO vo) throws Exception;
//
// ComtsrcdataDTO selectComtSrcData(ComtrlsSrcdataVO vo) throws Exception;
}

View File

@ -0,0 +1,26 @@
package egovframework.com.mtdata.comtrls.service.impl;
import egovframework.com.mtdata.comtrls.mapper.ComtrlsdataMapper;
import egovframework.com.mtdata.comtrls.service.ComtrlsdataService;
import egovframework.com.mtdata.comtrls.vo.ComtrlsColVO;
import egovframework.com.mtdata.comtrls.vo.ComtrlsMetaDataVO;
import egovframework.com.mtdata.comtrls.vo.ComtrlsSrcdataVO;
import org.egovframe.rte.fdl.cmmn.EgovAbstractServiceImpl;
import org.json.simple.parser.JSONParser;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
@Service("ComtrlsdataService")
public class ComtrlsdataServiceImpl extends EgovAbstractServiceImpl implements ComtrlsdataService {
@Resource(name = "ComtrlsdataMapper")
private ComtrlsdataMapper comtrlsdataMapper;
@Override
public int insertComtrlsMetadataInfo(ComtrlsMetaDataVO vo) throws Exception {
return comtrlsdataMapper.insertComtrlsMetadataInfo(vo);
}
}

View File

@ -0,0 +1,18 @@
package egovframework.com.mtdata.comtrls.vo;
import lombok.Getter;
import lombok.Setter;
// author : psh
@Getter
@Setter
public class ComtrlsColVO {
/** 공유데이터 컬럼 ID*/
private int rlsDataColId;
/** 공유데이터 테이블 ID */
private int rlsDataId;
/** 공유데이터 컬럼명 */
private String rlsDataColNm;
}

View File

@ -0,0 +1,41 @@
package egovframework.com.mtdata.comtrls.vo;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class ComtrlsMetaDataVO {
/** 공유데이터ID(PK) */
private int rlsDataId;
/** 공유데이터명 */
private String rlsDataNm;
/** 공유데이터 설명 */
private String rlsDataDc;
/** 공유데이터 요청자 ID */
private int rlsDataAplcntId;
/** 공유데이터 검토자 ID */
private int rlsDataRvwId;
/** 공유데이터 관리기관 ID */
private int rlsDataMngDeptId;
/** 공유데이터 출처기관 ID */
private int rlsDataSrcInstId;
/** 공유데이터 요청일 */
private String regDt;
/** 공유데이터 생성일 */
private String crtYmd;
/** 공유데이터 조회수 */
private int inqCnt;
/** 공유데이터 제공 방식 */
private String dwnldType;
/** 공유데이터 제공 횟수 */
private int dwnldCnt;
/** (비정형데이터를 위한)경로 */
private String rlsDataFilePath;
/** 현재상태(심의중, 데이터추출중, 비식별화중, 완료) */
private String rlsDataSttsChg;
/** 공개여부 */
private String rlsYn;
}

View File

@ -0,0 +1,18 @@
package egovframework.com.mtdata.comtrls.vo;
import lombok.Getter;
import lombok.Setter;
// author : psh
@Getter
@Setter
public class ComtrlsSrcdataVO {
/** 공유데이터 ID */
private int rlsDataVlId;
/** 공유데이터 */
private String rlsDataVl;
/** 공유데이터 테이블 ID */
private int rlsDataId;
}

View File

@ -0,0 +1,64 @@
package egovframework.com.mtdata.comtrls.web;
import egovframework.com.mtdata.comtrls.service.ComtrlsdataService;
import egovframework.com.mtdata.comtrls.vo.ComtrlsMetaDataVO;
import egovframework.com.mtdata.comtrls.vo.ComtrlsSrcdataVO;
import egovframework.com.mtdata.comtsrcdata.service.ComtsrcdataService;
import egovframework.com.mtdata.comtsrcdata.vo.ComtTableVO;
import egovframework.com.mtdata.database.vo.DatabaseInfoVO;
import org.json.simple.JSONObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.sql.*;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@RestController
@RequestMapping("/api")
public class ComtrlsdataController {
/** Service */
@Resource(name = "ComtsrcdataService")
private ComtsrcdataService comtsrcdataService;
@Resource(name = "ComtrlsdataService")
private ComtrlsdataService comtrlsdataService;
private static final Logger log = LoggerFactory.getLogger(ComtrlsdataController.class);
@RequestMapping("/comtrls.do")
@Transactional(rollbackFor = Exception.class)
public String comtrls() throws Exception {
try {
ComtTableVO vo = new ComtTableVO();
vo.setSrcDataMetaId(3);
ComtTableVO tableVo = comtsrcdataService.selectSrcMetaData(vo);
ComtrlsMetaDataVO metaVo = new ComtrlsMetaDataVO();
metaVo.setRlsDataNm("공유데이터 가져오기 테스트 DATA NAME");
// metaVo.setRlsDataMngDeptId(tableVo.get);
metaVo.setRlsDataAplcntId(1);
metaVo.setRlsDataRvwId(3);
metaVo.setRlsDataSrcInstId(4);
metaVo.setDwnldType("JSON");
metaVo.setRlsDataSttsChg("PROGRESS");
metaVo.setRlsDataSttsChg("Y");
return "공유데이터 컨트롤러 ::";
} catch (Exception e) {
log.error("Exception {}", e);
throw new RuntimeException(e.getMessage());
}
}
}

View File

@ -6,9 +6,32 @@ import egovframework.com.mtdata.comtsrcdata.vo.ComtTableVO;
import egovframework.com.mtdata.comtsrcdata.vo.ComtsrcdataVO;
import org.egovframe.rte.psl.dataaccess.mapper.Mapper;
import java.util.List;
@Mapper("ComtsrcdataMapper")
public interface ComtsrcdataMapper {
/**
* [comtsrcdatameta_new]테이블 조회
*
* @param vo
* @return
* @throws Exception
*/
public ComtTableVO selectSrcMetaData(ComtTableVO vo) throws Exception;
//
//SELECT src_data_meta_id,
// extr_id,
// src_data_tbl_nm
//FROM comtsrcdatameta_new meta,
// comtextrtblinfo ex
// WHERE 1=1
// meta.extr_id = ex.extr_id
// src_data_meta_id = #{srcDataMetaId}
/**
* 원천데이터 추출정보를 [comtextrtblinfo]테이블에 저장
*

View File

@ -6,8 +6,21 @@ import egovframework.com.mtdata.comtsrcdata.vo.ComtExtrtVO;
import egovframework.com.mtdata.comtsrcdata.vo.ComtTableVO;
import egovframework.com.mtdata.comtsrcdata.vo.ComtsrcdataVO;
import java.util.List;
public interface ComtsrcdataService {
/**
* [comtsrcdatameta_new]테이블 조회
*
* @param vo
* @return
* @throws Exception
*/
public ComtTableVO selectSrcMetaData(ComtTableVO vo) throws Exception;
/**
* 데이터베이스 스키마 조회 [comtsysdbinfo]테이블에 데이터를 저장한다
*

View File

@ -13,6 +13,7 @@ import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import javax.json.stream.JsonParser;
import java.util.List;
@Service("ComtsrcdataService")
public class ComtsrcdataServiceImpl extends EgovAbstractServiceImpl implements ComtsrcdataService {
@ -20,6 +21,18 @@ public class ComtsrcdataServiceImpl extends EgovAbstractServiceImpl implements C
@Resource(name = "ComtsrcdataMapper")
private ComtsrcdataMapper comtsrcdataMapper;
/**
* [comtsrcdatameta_new]테이블 조회
*
* @param vo
* @return
* @throws Exception
*/
public ComtTableVO selectSrcMetaData(ComtTableVO vo) throws Exception{
return comtsrcdataMapper.selectSrcMetaData(vo);
}
@Override
public int insertComtExtrtInfo(ComtExtrtVO vo) throws Exception {
return comtsrcdataMapper.insertComtExtrtInfo(vo);

View File

@ -150,7 +150,7 @@ public class MySQLSchemaViewerImpl implements DatabaseSchemaViewer {
tbVo.setTableNm(tbNm);
log.info("TableName :", tbNm);
int insertTbCnt = dbService.insertDbTblInfo(tbVo);
comtProcess(conn, dbVo, tbVo);
comtsrcProcess(conn, dbVo, tbVo);
if (insertTbCnt > 0) {
log.info("TABLE info successfully inserted for: {}", tbNm);
@ -193,7 +193,7 @@ public class MySQLSchemaViewerImpl implements DatabaseSchemaViewer {
// 원천데이터 처리
private void comtProcess(Connection conn, DatabaseInfoVO dbVo, TableInfoVO tbVo) throws SQLException {
private void comtsrcProcess(Connection conn, DatabaseInfoVO dbVo, TableInfoVO tbVo) throws SQLException {
try {
// [ comtextrtblinfo ] 원천데이터 추출 정보 저장
ComtExtrtVO comExVo = new ComtExtrtVO();
@ -263,4 +263,77 @@ public class MySQLSchemaViewerImpl implements DatabaseSchemaViewer {
}
}
// 원천데이터 -> 공유데이터 INSERT
private void comtrlsProcess(Connection conn, DatabaseInfoVO dbVo, TableInfoVO tbVo) throws SQLException {
try {
ComtExtrtVO comExVo = new ComtExtrtVO();
comExVo.setSysId(dbVo.getSysId());
int extCnt = comtsrcdataService.insertComtExtrtInfo(comExVo);
if (extCnt > 0) {
String dbNm = dbVo.getDbNm();
String tbNm = tbVo.getTableNm();
// [ comtrlstrgtmetadata ] 공유데이터 메타정보 테이블
ComtTableVO comtTableVo = new ComtTableVO();
comtTableVo.setExtrId(comExVo.getExtrId());
comtTableVo.setSrcDataTblNm(tbNm);
int insertTbCnt = comtsrcdataService.insertComtTabledataInfo(comtTableVo);
if (insertTbCnt > 0) {
String selectTableSql = "SELECT * FROM "+dbNm+"."+tbNm;
Statement stmt = conn.createStatement();
ResultSet datas = stmt.executeQuery(selectTableSql);
ResultSetMetaData rsmd = datas.getMetaData();
int colCnt = rsmd.getColumnCount();
JSONObject obj = new JSONObject();
int insertDataCnt = 0;
int insertColCnt = 0;
// [ comtrlsdatacol ] 공유데이터 컬럼 정보 테이블
for (int i=0; i<colCnt; i++) {
ComtColVO colVo = new ComtColVO();
colVo.setSrcDataColNm(rsmd.getColumnLabel(i+1));
colVo.setSrcDataMetaId(comtTableVo.getSrcDataMetaId());
insertColCnt = comtsrcdataService.insertComtSrcCol(colVo);
}
// [ comtrlsdata ] 공유데이터 테이블
if(insertColCnt > 0){
while (datas.next()){
Map<String, String> dataVlMap = new HashMap<>();
for (int i=0; i<colCnt; i++) {
String columnName = rsmd.getColumnLabel(i+1);
String value = datas.getString(i+1);
dataVlMap.put(columnName, value);
}
obj.putAll(dataVlMap);
ComtsrcdataVO srcVo = new ComtsrcdataVO();
srcVo.setSrcDataVl(obj.toString());
srcVo.setSrcDataMetaId(comtTableVo.getSrcDataMetaId());
insertDataCnt = comtsrcdataService.insertComtSrcdata(srcVo);
if(insertDataCnt > 0){
log.info("all data insert SUCCESS!!!!!!");
}else{
log.warn("No DATA was inserted for: {}", tbNm);
}
}
}else{
log.warn("No COLUMN info was inserted for: {}", tbNm);
}
}else{
log.warn("No Table info was inserted for: {}", tbNm);
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}

View File

@ -0,0 +1,50 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="egovframework.com.mtdata.comtrls.mapper.ComtrlsdataMapper">
<insert id="insertComtrlsMetadataInfo" parameterType="ComtrlsMetaDataVO">
<selectKey resultType="int" keyProperty="rlsDataId" order="BEFORE">
SELECT nextval('comtrlstrgtmetadata_rls_data_id_seq') as rlsDataId
</selectKey>
insert into comtrlstrgtmetadata (rls_data_id,
rls_data_nm,
rls_data_dc,
rls_data_aplcnt_id,
rls_data_rvw_id,
rls_data_mng_dept_id,
rls_data_src_inst_id,
reg_dt,
crt_ymd,
rls_data_stts_chg,
rls_yn)
values (
#{rlsDataId},
#{rlsDataNm},
#{rlsDataDc},
#{rlsDataAplcntId},
#{rlsDataRvwId},
#{rlsDataMngDeptId},
#{rlsDataSrcInstId},
CURRENT_TIMESTAMP,
#{crt_ymd},
#{rlsDataSttsChg},
#{rlsYn})
</insert>
<insert id="insertComtrlsSrcdata" parameterType="ComtrlsSrcdataVO">
<selectKey resultType="int" keyProperty="rlsDataVlId" order="BEFORE">
SELECT nextval('comtrlsdata_rls_data_vl_id_seq') as rlsDataVlId
</selectKey>
insert into comtrlsdata (rls_data_vl_id, rls_data_id, rls_data_vl)
values (#{rlsDataVlId}, #{rlsDataId}, ( (#{rlsDataVl})::jsonb ) )
</insert>
<insert id="insertComtSrcCol" parameterType="ComtrlsColVO">
<selectKey resultType="int" keyProperty="rlsDataColId" order="BEFORE">
SELECT nextval('comtrlsdatacol_rls_data_col_id_seq') as rlsDataColId
</selectKey>
insert into comtrlsdatacol (rls_data_col_id, rls_data_id, rls_data_col_nm)
values (#{rlsDataColId}, #{rlsDataId}, #{rlsDataColNm} )
</insert>
</mapper>

View File

@ -15,6 +15,22 @@
<result property="useYn" column="USE_YN"/>
</resultMap>
<!-- 원천데이터 -> 공유데이터로 copy할때 이용-->
<select id="selectSrcMetaData" parameterType="ComtTableVO" resultType="ComtTableVO">
SELECT src_data_meta_id,
extr_id,
src_data_tbl_nm
FROM comtsrcdatameta_new
WHERE 1=1
AND src_data_meta_id = #{srcDataMetaId}
</select>
<select id="selectSrcColData" parameterType="ComtsrcdataVO" resultType="ComtColVO">
SELECT src_data_col_id,
src_data_meta_id,
src_data_col_nm
FROM comtsrcdatacol_new
</select>
<insert id="insertComtExtrtInfo" parameterType="ComtExtrtVO">
<selectKey resultType="int" keyProperty="extrId" order="BEFORE">
@ -52,7 +68,7 @@
<!--sample-->
<update id="updateDatasrc" parameterType="ComtsrcdataVO">
update comtsrcdata
update comtsrcdata_new
set src_data_vl= ( (#{srcDataVl})::jsonb )
where src_data_id= 2
</update>

View File

@ -23,5 +23,10 @@
<typeAlias alias="comtTableVO" type="egovframework.com.mtdata.comtsrcdata.vo.ComtTableVO"/>
<typeAlias alias="comtColVO" type="egovframework.com.mtdata.comtsrcdata.vo.ComtColVO"/>
<!-- 공유데이터 -->
<typeAlias alias="comtrlsMetaDataVO" type="egovframework.com.mtdata.comtrls.vo.ComtrlsMetaDataVO"/>
<typeAlias alias="comtrlsColVO" type="egovframework.com.mtdata.comtrls.vo.ComtrlsColVO"/>
<typeAlias alias="comtrlsSrcdataVO" type="egovframework.com.mtdata.comtrls.vo.ComtrlsSrcdataVO"/>
</typeAliases>
</configuration>