From 15bc59f3d9dfc3aca6a639c14bb753939010dcc5 Mon Sep 17 00:00:00 2001 From: donggyu97 Date: Tue, 14 Jun 2022 18:36:01 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20Mpower=20v2=20board=EC=97=90=20?= =?UTF-8?q?=EC=A0=81=EC=9A=A9.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- repo/MPowerClient.jar | Bin 0 -> 56365 bytes .../ctgy/v2/controller/BoardController.java | 3 +- .../biz/ctgy/v2/service/IBoardService.java | 4 + .../ctgy/v2/service/impl/BoardService.java | 45 +- .../com/xit/core/util/mpower/MpowerUtil.java | 851 ++++++++++++++++++ 5 files changed, 901 insertions(+), 2 deletions(-) create mode 100644 repo/MPowerClient.jar create mode 100644 src/main/java/com/xit/core/util/mpower/MpowerUtil.java diff --git a/repo/MPowerClient.jar b/repo/MPowerClient.jar new file mode 100644 index 0000000000000000000000000000000000000000..512793fc5c8c5c961ead616ef594596835d32041 GIT binary patch literal 56365 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

%&vraWk8e}&&9bB`IT>6kKuR{(e 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 literal 0 HcmV?d00001 diff --git a/src/main/java/com/xit/biz/ctgy/v2/controller/BoardController.java b/src/main/java/com/xit/biz/ctgy/v2/controller/BoardController.java index 9045e44..b1a52f8 100644 --- a/src/main/java/com/xit/biz/ctgy/v2/controller/BoardController.java +++ b/src/main/java/com/xit/biz/ctgy/v2/controller/BoardController.java @@ -48,7 +48,8 @@ public class BoardController { final BoardDto dto, @Parameter(hidden = true) final Pageable pageable) { - return RestResponse.of(service.findAll(dto, pageable)); + //return RestResponse.of(service.findAll(dto, pageable)); + return RestResponse.of(service.findAllTest(dto)); } @Secured(policy = SecurityPolicy.TOKEN) diff --git a/src/main/java/com/xit/biz/ctgy/v2/service/IBoardService.java b/src/main/java/com/xit/biz/ctgy/v2/service/IBoardService.java index 9c62d63..3d209a3 100644 --- a/src/main/java/com/xit/biz/ctgy/v2/service/IBoardService.java +++ b/src/main/java/com/xit/biz/ctgy/v2/service/IBoardService.java @@ -5,9 +5,13 @@ import com.xit.biz.ctgy.entity.MinCivBoard680; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; +import java.util.Map; + public interface IBoardService { Page findAll(final BoardDto dto, Pageable pageable); + + Map findAllTest(final BoardDto dto); Page findAll2(final MinCivBoard680 entity, Pageable pageable); int modifyByCiCode(Long ciCode); diff --git a/src/main/java/com/xit/biz/ctgy/v2/service/impl/BoardService.java b/src/main/java/com/xit/biz/ctgy/v2/service/impl/BoardService.java index f417951..7d19cc0 100644 --- a/src/main/java/com/xit/biz/ctgy/v2/service/impl/BoardService.java +++ b/src/main/java/com/xit/biz/ctgy/v2/service/impl/BoardService.java @@ -12,6 +12,7 @@ import com.xit.core.oauth2.utils.HeaderUtil; import com.xit.core.support.jpa.JpaUtil; import com.xit.core.util.Checks; import com.xit.core.util.CommUtil; +import com.xit.core.util.mpower.MpowerUtil; import lombok.AllArgsConstructor; import org.mapstruct.factory.Mappers; import org.springframework.data.domain.Example; @@ -23,6 +24,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.List; +import java.util.Map; import static org.springframework.data.domain.ExampleMatcher.GenericPropertyMatchers.contains; @@ -39,7 +41,48 @@ public class BoardService implements IBoardService { pageable = JpaUtil.getPagingInfo(pageable); return repository.findAll(dto, pageable); } - + @Transactional(readOnly = true) + public Map findAllTest(final BoardDto dto){ + MpowerUtil sendXml = new MpowerUtil(); + String query = "SELECT ci_code ciCode,\n" + + " name ciName,\n" + + " ci_contentno ciContentno,\n" + + " ci_title ciTitle,\n" + + " ci_contents ciContents,\n" + + " ci_nalja ciNalja,\n" + + " ci_step ciStep,\n" + + " ci_revel ciRevel,\n" + + " ci_ref ciRef,\n" + + " ci_hit ciHit,\n" + + " ci_pass ciPass,\n" + + " ci_id ciId \n" + + " FROM min_civ_board680 LEFT OUTER JOIN min_userinfo ON (ci_id = userid)\n" + + " WHERE ci_code IN\n" + + " (20,\n" + + " 19,\n" + + " 18,\n" + + " 17,\n" + + " 16,\n" + + " 13,\n" + + " 15,\n" + + " 12,\n" + + " 14,\n" + + " 11,\n" + + " 9,\n" + + " 10,\n" + + " 7,\n" + + " 8,\n" + + " 6,\n" + + " 4,\n" + + " 3,\n" + + " 1,\n" + + " 5,\n" + + " 2)"; + sendXml.setFeilds("ciCode, ciName, ciContentno, ciTitle, ciContents, ciNalja, ciStep, ciRevel, ciRef, ciHit, ciPass, ciId"); + sendXml.setQuery(query); + Map eMap = sendXml.selectCustomQuery(); + return eMap; + } @Transactional(readOnly = true) public Page findAll2(final MinCivBoard680 entity, Pageable pageable) { pageable = JpaUtil.getPagingInfo(pageable); diff --git a/src/main/java/com/xit/core/util/mpower/MpowerUtil.java b/src/main/java/com/xit/core/util/mpower/MpowerUtil.java new file mode 100644 index 0000000..e8c4eac --- /dev/null +++ b/src/main/java/com/xit/core/util/mpower/MpowerUtil.java @@ -0,0 +1,851 @@ +package com.xit.core.util.mpower; + +import java.nio.charset.StandardCharsets; +import java.sql.CallableStatement; +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.sql.Statement; +import java.util.*; + +//import org.apache.log4j.Logger; + +//import com.gpki.util.Base64; +import com.plf.client.Client; + +//import egovframework.rte.psl.dataaccess.util.EgovMap; + +public class MpowerUtil { + //DBName Properties +// static String DbName2 = PropertiesUtil.getValue("Globals.DBName"); + static String DbName2 = "gn"; + + + Client mpower = null; + static Client mpower2 = null; + //static String hostip = "115.21.123.19"; + static String hostip = "127.0.0.1"; + static int port = 9999; + static String query = ""; + String wholeQuery = ""; + //protected static Logger logger = Logger.getLogger(MpowerUtil.class.getName()); + static ArrayList feilds = new ArrayList(); + static String feild = ""; + static String tmpFeilds = ""; + static Boolean RowNum = false; + static String tableNm = ""; + static String WhereStr = ""; + static String Orderby = ""; + static int pageIndex = 0; + static int firstIndex = 0; + static int lastIndex = 10; + static int recordCountPerPage = 10; + static String beforeXml = ""; + static String afterXmlsp = "]]>"; + static Boolean pagingYn = false; + + + //Ps변수 + static String Params = ""; + static String finalParams = ""; + static String threeXml = ""; + static String threeXmlEnd = ""; + static String forXmlEnd = ""; + static int psParamCount = 0; + static String psFinalFarams =""; + static String QueryXml = ""; + + //static String vioPhoto = PropertiesUtil.getValue("Globals.vioPhoto"); //주정차사진경로 + static String vioPhoto = ""; + //static String vioPhotoBus = PropertiesUtil.getValue("Globals.vioPhotoBus"); //버스사진경로 + static String vioPhotoBus = ""; + //static String tunullingFile = PropertiesUtil.getValue("Globals.tunullingFile"); //터널링서버에 복사되는 첨부파일 위치 + static String tunullingFile = ""; + + public void setQuery(String query){ + MpowerUtil.query = query; + } + + public void setRowNum(boolean truefalse){ + RowNum = truefalse; + } + + public void setPageIndex(int pi){ + pageIndex = pi; + } + + public void setRecordCountPerPage(int rcpp){ + recordCountPerPage = rcpp; + } + + public int getRecordCountPerPage(){ + return recordCountPerPage; + } + + public String getWholeQuery() { + return wholeQuery; + } + + public void setWholeQuery(String wholeQuery) { + this.wholeQuery = wholeQuery; + } + + public void setFeild(String feildNm){ + feilds.add(feildNm); + } + + public void setFeild2(String feildNm){ + feild = feildNm; + } + + public void setTableNm(String tNm){ + tableNm = tNm; + } + public void setWhereStr(String whr){ + WhereStr += whr; + } + public void setOrderby(String ob){ + Orderby += ob; + } + + public int getFirstIndex() { + return (pageIndex - 1) * recordCountPerPage +1; + } + + public int getLastIndex() { + return lastIndex = pageIndex * recordCountPerPage; + } + + public void setPagingYn(Boolean yn){ + pagingYn = yn; + } + + public void AddParam(String inputType,String Val){ + psParamCount ++; + Params += ""; + } + + //kkj추가 + public void AddParam2(String inputType,long Val){ + psParamCount ++; + Params += ""; + } + + public void setParamsBody(){ + Params = "" + Params + ""; + + afterXmlsp = "]]>"; + forXmlEnd = ""; + } + + public void setSPQuerysBody(){ + QueryXml = beforeXmlsp + tableNm + "(" +psFinalFarams + ")" + afterXmlsp + Params + forXmlEnd; + } + + public void AddFinalParam(int count){ + for(int i=0;i PsQuery() throws Exception{ + //EgovMap resultEgov = new EgovMap(); + Map resultEgov = new HashMap<>(); + try{ + AddFinalParam(psParamCount); + setParamsBody(); + setSPQuerysBody(); + resultEgov = connreturnMpwoer(QueryXml); + }catch(Exception e) + { + e.printStackTrace(); + }finally{ + clearValidation(); + } + return resultEgov; + } + + public Map connreturnMpwoer(String psQuery) throws Exception{ + mpower = new Client(hostip,port); + mpower.getConnection("MPowerXmlToQuery.xmlQuery1"); + mpower.setInput("SQLXML", psQuery); + mpower.Request(); + //EgovMap eMap = new EgovMap(); + Map eMap = new HashMap<>(); + eMap.put("result",mpower.getString("result", 0, 0)); + + int cnt = 1; + for( int i = 0 ; i < mpower.getMaxCol("list1"); i++){ + eMap.put("list"+cnt,mpower.getString("list1", 0, i)); + cnt ++; + } + return eMap; + } + + public List selectQuery() { + String fileList = ""; + for(int cnt = 0;cnt mList = new ArrayList(); + List mList= new ArrayList<>(); + + try { + mpower = new Client(hostip,port); + mpower.getConnection("MPowerXmlToQuery.xmlQuery1"); + mpower.setInput("SQLXML", query); + mpower.Request(); + String result = mpower.getString("result", 0, 0); + int row; + if (result.equals("true")){ + row = mpower.getMaxRow("list1"); + if(row>0){ + for(int i=0;i m = new HashMap<>(); + for(int j=0;j(); + tableNm = ""; + WhereStr = ""; + Orderby = ""; + } + + return mList; + } + + private void clearValidation() { + query = ""; + feilds = new ArrayList(); + tableNm = ""; + WhereStr = ""; + Orderby=""; + psParamCount = 0; + QueryXml = ""; + Params = ""; + psFinalFarams = ""; + recordCountPerPage = 10; + feild = ""; + } + + + /** + * @ 페이징 처리 SELECT 호출 + * @return + */ + public Map selectListQuery() { + //EgovMap mListMap = new EgovMap(); + Map mListMap = new HashMap<>(); + //배열로 넘어온 필드를 String 오브젝트로 변형 + String fileList = ""; + for(int cnt = 0;cnt(); + this.setFeilds("RN, "+tmpFeilds); + } + + //List mList = new ArrayList(); + List mList = new ArrayList<>(); + System.out.println("mlistmlist"); + System.out.println(mList); + System.out.println("mlistmlist"); + int mListCount = 0; + try { + mpower = new Client(hostip,port); + mpower.getConnection("MPowerXmlToQuery.xmlQuery1"); + mpower.setInput("SQLXML", query); + mpower.Request(); + String result = mpower.getString("result", 0, 0); + int row = 0; + if (result.equals("true")){ + row = mpower.getMaxRow("list1"); + if(row>0){ + for(int i=0;i m = new HashMap<>(); + for(int j=0;j0){ + mpower = new Client(hostip,port); + mpower.getConnection("MPowerXmlToQuery.xmlQuery1"); + mpower.setInput("SQLXML", Cquery); + mpower.Request(); + + String strList1 = mpower.getString("list1", 0, 0); + + if( !strList1.equals("") && strList1 != null){ + mListCount = Integer.parseInt(strList1); + } + mpower.disconnect(); + } + + } catch (Exception e) { + e.printStackTrace(); + } finally{ + clearValidation(); + } + System.out.println("엠리스트트트트트"); + System.out.println(mListCount); + System.out.println(mListMap); + System.out.println(mList); + System.out.println("엠리스트트트트트"); + mListMap.put("mListCount", mListCount); + return mListMap; + } + + // + + /** + * @ 페이징 처리 SELECT 호출 + * @return + * @throws SQLException + */ + public Map selectListQueryNew() throws SQLException { + //EgovMap mListMap = new EgovMap(); + Map mListMap = new HashMap<>(); + //배열로 넘어온 필드를 String 오브젝트로 변형 + String fileList = ""; + for(int cnt = 0;cnt(); + this.setFeilds("RN, "+tmpFeilds); + } + + //List mList = new ArrayList(); + List mList = new ArrayList<>(); + int mListCount = 0; + + Connection con; + Statement stmt; //단순 쿼리 실행 + PreparedStatement pstmt = null; //컴파일시 디비에 먼저 파싱하므로 Statement 보다 빠름 + CallableStatement cstmt; //프로시져를 호출하므로 속도가 PreparedStatement 보다 빠름 + ResultSet rs = null; + String dbURL = "jdbc:oracle:thin:@115.21.123.114:1521:ora10g"; + String driver = "oracle.jdbc.OracleDriver"; + + try { + Class.forName(driver); + } catch (ClassNotFoundException e1) { + // TODO Auto-generated catch block + e1.printStackTrace(); + } + + con = DriverManager.getConnection(dbURL, "TRAFFIC", "xhdgkq0"); + + //3.1 Statement 객체로 구문객체 생성 및 실행 + int size = 0; + try{ + System.out.println("Query :" + finalQuery); + pstmt = con.prepareStatement(finalQuery); + rs = pstmt.executeQuery(); // 이거 왜 실행안??? + System.out.println("rs:" + rs); + boolean chpoint = false; + while(rs.next()) + { + size = rs.getInt(1); + //EgovMap m = new EgovMap(); + Map m = new HashMap<>(); + if(!chpoint) + { + for(int j=0;j selectListQuery2() { + //EgovMap mListMap = new EgovMap(); + Map mListMap = new HashMap<>(); + //배열로 넘어온 필드를 String 오브젝트로 변형 + String fileList = ""; + for(int cnt = 0;cnt(); + this.setFeilds("RN, "+tmpFeilds); + } + + //List mList = new ArrayList(); + List mList = new ArrayList<>(); + int mListCount = 0; + try { + mpower = new Client(hostip,port); + mpower.getConnection("MPowerXmlToQuery.xmlQuery1"); + mpower.setInput("SQLXML", query); + mpower.Request(); + String result = mpower.getString("result", 0, 0); + int row = 0; + if (result.equals("true")){ + row = mpower.getMaxRow("list1"); + if(row>0){ + for(int i=0;i m = new HashMap<>(); + for(int j=0;j0){ + mpower = new Client(hostip,port); + mpower.getConnection("MPowerXmlToQuery.xmlQuery1"); + mpower.setInput("SQLXML", Cquery); + mpower.Request(); + + String strList1 = mpower.getString("list1", 0, 0); + + if( !strList1.equals("") && strList1 != null){ + mListCount = Integer.parseInt(strList1); + } + mpower.disconnect(); + } + + } catch (Exception e) { + e.printStackTrace(); + } finally{ + clearValidation(); + } + mListMap.put("mListCount", mListCount); + return mListMap; + } + + public Map selectListQuery_pay() { + //EgovMap mListMap = new EgovMap(); + Map mListMap = new HashMap<>(); + //배열로 넘어온 필드를 String 오브젝트로 변형 + String fileList = ""; + for(int cnt = 0;cnt(); + this.setFeilds("RN, "+tmpFeilds); + } + + //List mList = new ArrayList(); + List mList = new ArrayList<>(); + int mListCount = 0; + try { + mpower2 = new Client(hostip,port); + mpower2.getConnection("MPowerXmlToQuery.xmlQuery1"); + mpower2.setInput("SQLXML", query); + mpower2.Request(); + String result = mpower2.getString("result", 0, 0); + int row = 0; + if (result.equals("true")){ + row = mpower2.getMaxRow("list1"); + if(row>0){ + for(int i=0;i m = new HashMap<>(); + for(int j=0;j0){ + mpower2.getConnection("MPowerXmlToQuery.xmlQuery1"); + mpower2.setInput("SQLXML", Cquery); + mpower2.Request(); + mListCount = Integer.parseInt(mpower2.getString("list1", 0, 0)); + //System.out.println("mListCount:"+mListCount); + } + //logger.debug("END getString list1"); + mpower2.disconnect(); + //logger.debug(Cquery); + //logger.debug("==============================================================================================================="); + + } catch (Exception e) { + e.printStackTrace(); + } finally{ + clearValidation(); + } + mListMap.put("mListCount", mListCount); + return mListMap; + } + + /** + * @ 페이징 처리 SELECT 호출 + * @return + */ + public Map selectCustomQuery() { + //EgovMap mListMap = new EgovMap(); + Map mListMap = new HashMap<>(); + //배열로 넘어온 필드를 String 오브젝트로 변형 + String fileList = ""; + for(int cnt = 0;cnt mList = new ArrayList(); + List mList = new ArrayList<>(); + int mListCount = 0; + try { + mpower = new Client(hostip,port); + mpower.getConnection("MPowerXmlToQuery.xmlQuery1"); + mpower.setInput("SQLXML", query); + mpower.Request(); + String result = mpower.getString("result", 0, 0); + int row; + if (result.equals("true")){ + row = mpower.getMaxRow("list1"); + if(row>0){ + for(int i=0;i m = new HashMap<>(); + if(!"".equals(feild) && feild != null){ + m.put("cbContent", mpower.getString("list1", i, 4)); + }else{ + for(int j=0;j