diff --git a/src/main/java/kr/xit/framework/biz/cmm/model/EcEsbInterfaceXmlDto.java b/src/main/java/kr/xit/framework/biz/cmm/model/EcEsbInterfaceXmlDto.java deleted file mode 100644 index 662b3578..00000000 --- a/src/main/java/kr/xit/framework/biz/cmm/model/EcEsbInterfaceXmlDto.java +++ /dev/null @@ -1,90 +0,0 @@ -package kr.xit.framework.biz.cmm.model; - -import javax.xml.bind.annotation.XmlAccessType; -import javax.xml.bind.annotation.XmlAccessorType; -import javax.xml.bind.annotation.XmlRootElement; - -import lombok.Getter; -import lombok.Setter; - -/** - * XmlRootElement - * JAXBContext에 등록 - * XmlAccessorType - * FIELD - 클래스의 모든 필드(static이 아니고 transient가 아닌)를 모두 XML에 바인딩 - * NONE - 어노테이션으로 지정하지 않는한 모든 필드는 XML에 바운딩되지 않는다. - * PROPERTY - getter/setter를 가진 모든 필드들은 자동으로 XML에 바운드된다. - * PUBLIC_MEMBER - 모든 public getter/setter들은 자동으로 XML에 바운드된다. - */ -@Getter -@Setter -@XmlRootElement(name = "dmndinfo") -@XmlAccessorType(XmlAccessType.FIELD) -public class EcEsbInterfaceXmlDto { -/* - @XmlElement(name = "interface_seq_n") - private String interfaceSeqN; - sys_gubun_c - anc_code_v - peti_gubun_c - peti_anc_code_v - peti_no_c - civil_no_c - peter_name_v - zip_code_c - address_v - email_v - cel_no_v - tel_no_v - peti_title_v - peti_reason_l - open_yn_c - peti_reg_d - peti_reason_attach_yn_c - peti_file_size_n - peti_file_path1_v - peti_file_path2_v - peti_file_path3_v - peti_file_path4_v - peti_file_path5_v - civil_gist_v - civil_abstract_l - pcd_dept_v - pcd_dept_nm_v - duty_id_v - pcd_email_v - pcd_tel_v - pcd_rst_cont_l - do_reg_d - pcd_rst_cont_attach_yn_c - pcd_file_size_n - pcd_file_path1_v - pcd_file_path2_v - pcd_file_path3_v - pcd_file_path4_v - pcd_file_path5_v - pcd_anc_code_v - peti_proc_dur_n - peti_end_d - anc_reg_d - more_again_v - satisfy_c - satisfy2_c - satisfy3_c - satisfy_reg_d - reg_d - send_yn_c - send_d - apply_d - apply_gubun_c - pcd_gubun_v - pcd_gubun2_v - pcd_gubun3_v - - ifid - srcorgcd - tgtorgcd -*/ - - -} diff --git a/src/main/java/kr/xit/framework/biz/cmm/model/NatlNewspaper.java b/src/main/java/kr/xit/framework/biz/cmm/model/NatlNewspaper.java new file mode 100644 index 00000000..476be573 --- /dev/null +++ b/src/main/java/kr/xit/framework/biz/cmm/model/NatlNewspaper.java @@ -0,0 +1,177 @@ +package kr.xit.framework.biz.cmm.model; + +import java.io.StringReader; +import java.nio.charset.StandardCharsets; + +import javax.xml.parsers.DocumentBuilder; +import javax.xml.parsers.DocumentBuilderFactory; + +import org.w3c.dom.Document; +import org.w3c.dom.Element; +import org.w3c.dom.Node; +import org.w3c.dom.NodeList; +import org.w3c.dom.traversal.DocumentTraversal; +import org.w3c.dom.traversal.NodeFilter; +import org.w3c.dom.traversal.NodeIterator; +import org.xml.sax.InputSource; + +public class NatlNewspaper { + private NatlNewspaperXmlDto natlNewspaperXmlDto; + + + + + + public static void main(String[] args) { + // String fileFullPath = "file:///D:/project_data/fims/01. 연계/01. 국민신문고/rcv/202209160959023e60d9$EPOUGA$1140100_2022091609485096255243399.xml"; + // try { + // Document doc = XMLFilePath2Doc(fileFullPath); + // getNodeList(doc, "dmndinfo"); + // //getNodeList(doc, "apndfilinfo"); + // //getNodeList(doc, "apndfilcont1"); + // + // //byte[] decode = Base64.decode(getNodeList(doc, "apndfilcont1")); + // //apndfilinfo + // } catch (Exception e) { + // e.printStackTrace(); + // } + + // String fpath = "D:/project_data/fims/01. 연계/01. 국민신문고/rcv/202209160959023e60d9$EPOUGA$1140100_2022091609485096255243399.xml"; + // + // try(BufferedReader reader = new BufferedReader(new InputStreamReader(Files.newInputStream(Paths.get(fpath)), + // StandardCharsets.UTF_8) , 1024*1024*2)) { + // JSONObject json = XML.toJSONObject(reader); + // String jsonStr = json.toString(4); + // System.out.println(jsonStr); + // }catch(IOException fe){ + // + // } + + + // try { + // Document doc = XMLFilePath2Doc(fileFullPath); + // getTraversalNodeList(doc); + // } catch (Exception e) { + // e.printStackTrace(); + // } + } + + + + + + /** + * XML String을 Document 로 반환 + * @param XMLString + * @return Document + */ + public static Document XMLString2Doc(String XMLString) throws Exception { + + InputSource is = new InputSource(new StringReader(XMLString)); + is.setEncoding(StandardCharsets.UTF_8.toString()); + DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance(); + DocumentBuilder dBuilder = dbFactory.newDocumentBuilder(); + + return dBuilder.parse(is); + } + + /** + * XML 파일 Document 로 반환 + * @param fullFilePath + * @return + * @throws Exception + */ + public static Document XMLFilePath2Doc(String fullFilePath) throws Exception { + + DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance(); + DocumentBuilder dBuilder = dbFactory.newDocumentBuilder(); + + return dBuilder.parse(fullFilePath); + } + + /** + * Doc 내에 노드 list 가져오기 + * @param doc + * @param getNodeList + */ + public static void getNodeList(Document doc, String getNodeList) { + doc.getDocumentElement().normalize(); + + String nm = doc.getDocumentElement().getNodeName(); + System.out.println("Root element :" + doc.getDocumentElement().getNodeName()); + NodeList nList = doc.getElementsByTagName(getNodeList); + + travNode(nList); + } + //노드 순회 메서드 + public static void travNode (NodeList nodes) { + + for (int i = 0; i < nodes.getLength(); i++) { + Node n = nodes.item(i); + + if (n.getNodeType() == Node.ELEMENT_NODE) { + NodeList childNodes = n.getChildNodes(); + int cnt = childNodes.getLength(); + + if (cnt == 1) { + System.out.printf("%s : %s%n", n.getNodeName(), n.getTextContent()); + } else { + System.out.printf("--------[ " + n.getNodeName() + " ]--------%n"); + } + + if (cnt > 1) { + travNode(childNodes); + } + } + } + } + + /** + * 모든 노드 순회 가져오기 + * @param doc + */ + public static void getTraversalNodeList (Document doc) { + //Doc 순회 + DocumentTraversal trav = (DocumentTraversal) doc; + DocFilter docFilter = new DocFilter("params");//조건에 따른 필터 처리 + + NodeIterator it = trav.createNodeIterator(doc.getDocumentElement(), + NodeFilter.SHOW_ELEMENT, docFilter, true); + + for (Node n = it.nextNode(); n != null; n = it.nextNode()) { + int cnt = n.getChildNodes().getLength(); + + if (cnt == 1) { + System.out.printf("%s : %s%n", n.getNodeName(), n.getTextContent()); + } else { + System.out.printf("--------[ " + n.getNodeName() + " ]--------%n"); + } + } + } + //DocumentTraversal 필터 + static class DocFilter implements NodeFilter { + + String deptId = ""; + + public DocFilter (String deptId) { + this.deptId = deptId; + } + + @Override + public short acceptNode(Node thisNode) { + + if (thisNode.getNodeType() == Node.ELEMENT_NODE) { + Element e = (Element) thisNode; + String nodeName = e.getNodeName(); + + if (! "params".equals(this.deptId)) { + return NodeFilter.FILTER_REJECT; + } + } + + return NodeFilter.FILTER_ACCEPT;// NodeFilter.FILTER_REJECT; + } + } + + +} diff --git a/src/main/java/kr/xit/framework/biz/cmm/model/NatlNewspaperXmlDto.java b/src/main/java/kr/xit/framework/biz/cmm/model/NatlNewspaperXmlDto.java new file mode 100644 index 00000000..5e716886 --- /dev/null +++ b/src/main/java/kr/xit/framework/biz/cmm/model/NatlNewspaperXmlDto.java @@ -0,0 +1,510 @@ +package kr.xit.framework.biz.cmm.model; + +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlRootElement; + +import lombok.Getter; +import lombok.Setter; + +/** + *
+ * 공공기관 interface
+ * XmlRootElement
+ *     JAXBContext에 등록
+ * XmlAccessorType
+ *     FIELD - 클래스의 모든 필드(static이 아니고 transient가 아닌)를 모두 XML에 바인딩
+ *     NONE - 어노테이션으로 지정하지 않는한 모든 필드는 XML에 바운딩되지 않는다.
+ *     PROPERTY - getter/setter를 가진 모든 필드들은 자동으로 XML에 바운드된다.
+ *     PUBLIC_MEMBER - 모든 public getter/setter들은 자동으로 XML에 바운드된다.
+ *
+ * 각 필드 comment중 이관 / 처리결과 / 반송에 따른 값이 차이가 있는경우
+ * 이관 / 처리결과 / 반송 순서로 각각 내용 표시
+ * 
+ */ +@Getter +@Setter +@XmlRootElement(name = "dmndinfo") +@XmlAccessorType(XmlAccessType.FIELD) +public class NatlNewspaperXmlDto { + + /** + * 인터페이스 키: 필수 + * PK : number(30) - YYYYMMDDHH24MISSFF+random(9) + */ + @XmlElement(name = "interface_seq_n") + private String interfaceSeqN; + + /** + * 시스템 구분: 필수 + * char(88) + * EC010008 과태료시스템 + */ + @XmlElement(name = "sys_gubun_c") + private String sysGubunC; + + /** + * 송신 기관 코드: 필수 + * varchar2(7) + * 1140100 / 신청기관코드 / 신청기관코드 + * ex)경기도 - 641000 + */ + @XmlElement(name = "anc_code_v") + private String ancCodeV; + + /** + * 민원 구분: 필수 + * char(3) + * 140:민원이송(기관코드-신문고) / 180: 답변 / 140: 반송(기관코드-연계기관) + */ + @XmlElement(name = "peti_gubun_c") + private String petiGubunC; + + /** + * 민원 기관 코드: 필수 + * varchar2(7) + * 최초 신청기관코드 그대로 사용(절대변경불가) + */ + @XmlElement(name = "peti_anc_code_v") + private String petiAncCodeV; + + /** + * 민원 신청 번호: 필수 + * varchar2(16) + * 국민신문고에서 생성(국민신문고의 민원 번호), 최초 이송이첩시는 null값 임. + * (신문고에서 생성된 데이터가 있을 경우는 넣어줌) + */ + @XmlElement(name = "peti_no_c") + private String petiNoC; + + /** + * 민원 접수 번호: 필수 + * varchar2(16) + * 국민신문고에서 생성(국민신문고의 접수 번호), 최초 이송이첩시는 null값 임. + * (신문고에서 생성된 데이터가 있을 경우는 넣어줌)" + */ + @XmlElement(name = "civil_no_c") + private String civilNoC; + + /** + * 민원 신청인 명: 이관 / 반송시 필수 + * varchar2(128) + */ + @XmlElement(name = "peter_name_v") + private String peterNameV; + + /** + * 민원 신청인 우편번호: 이관 / 반송시 필수 + * varchar2(7) + */ + @XmlElement(name = "zip_code_c") + private String zipCodeC; + + /** + * 민원 신청인 주소: 이관 / 반송시 필수 + * varchar2(400) + */ + @XmlElement(name = "address_v") + private String addressV; + + /** + * 민원 신청인 이메일 + * varchar2(64) + */ + @XmlElement(name = "email_v") + private String emailV; + + /** + * 민원 신청인 핸드폰 번호 + * varchar2(20) + */ + @XmlElement(name = "cel_no_v") + private String celNoV; + + /** + * 민원 신청인 전화 번호 + * varchar2(20) + */ + @XmlElement(name = "tel_no_v") + private String telNoV; + + /** + * 민원 신청 제목: 이관 / 반송시 필수 + * varchar2(500) + */ + @XmlElement(name = "peti_title_v") + private String petiTitleV; + + /** + * 민원 신청 내용: 이관 / 반송시 필수 + * clob + */ + @XmlElement(name = "peti_reason_l") + private String petiReasonL; + + /** + * 민원 공개 여부: 이관 / 반송시 필수 + * char(1) + * Y = 공개, N = 비공개 (default N) + * Y로 수신 시에도 내부적용 시에는 비공개로 적용 요함(개인정보보호지침) + * 송신 시는 모두 N으로 송신 + */ + @XmlElement(name = "open_yn_c") + private String openYnC; + + /** + * 민원 신청일: 이관 / 반송시 필수 + * date : YYYYMMDDHH24MISS + */ + @XmlElement(name = "peti_reg_d") + private String petiRegD; + + /** + * 민원 신청 내용 첨부 여부: 이관시 필수 + * char(1) + * Y = 첨부, N = 미첨부(default) + */ + @XmlElement(name = "peti_reason_attach_yn_c") + private String petiReasonAttachYnC; + + /** + * 민원 신청 첨부파일 크기: 이관시 필수 + * number(10) + */ + @XmlElement(name = "peti_file_size_n") + private String petiFileSizeN; + + //------------------------------------------------------------- + /** + * 민원 신청 첨부파일명1 + * varchar2(2000) + */ + @XmlElement(name = "peti_file_path1_v") + private String petiFilePath1V; + + /** + * 민원 신청 첨부파일명2 + * varchar2(2000) + */ + @XmlElement(name = "peti_file_path2_v") + private String petiFilePath2V; + + /** + * 민원 신청 첨부파일명3 + * varchar2(2000) + */ + @XmlElement(name = "peti_file_path3_v") + private String petiFilePath3V; + + /** + * 민원 신청 첨부파일명4 + * varchar2(2000) + */ + @XmlElement(name = "peti_file_path4_v") + private String petiFilePath4V; + + /** + * 민원 신청 첨부파일명5 + * varchar2(2000) + */ + @XmlElement(name = "peti_file_path5_v") + private String petiFilePath5V; + //----------------------------------------------------------------------------- +/* + @Getter + @Setter + @XmlRootElement(name="petiFilePaths") + private static class PetiFilePaths{ + private List petiFilePath; + + + @Getter + @Setter + @XmlRootElement(name="petiFilePath") + public static class PetiFilePath { + private String petiFilePath; + } + } + */ + + + /** + * 접수 일자 + * date + */ + @XmlElement(name = "anc_reg_d") + private String ancRegD; + + /** + * 한마디 더 + * varchar2(4000) + */ + @XmlElement(name = "more_again_v") + private String moreAgainV; + + //------------------------------------------------------------------------------ + /** + * 만족도 항목1 + * char(8) + */ + @XmlElement(name = "satisfy_c") + private String satisfyC; + + /** + * 만족도 항목2 + * char(8) + */ + @XmlElement(name = "satisfy2_c") + private String satisfy2C; + + /** + * 만족도 항목3 + * char(8) + */ + @XmlElement(name = "satisfy3_c") + private String satisfy3C; + //------------------------------------------------------------------------------ + + /** + * 만족도 입력일 + * date + */ + @XmlElement(name = "satisfy_reg_d") + private String satisfyRegD; + + /** + * 등록 일자: 필수 + * date + * 반영시에 sysdate(YYYYMMDDHH24MISS)로 생성 + */ + @XmlElement(name = "reg_d") + private String regD; + + /** + * 송신 여부: 필수 + * char(1) + * 1:송신 / 2:수신 / 1:송신 + */ + @XmlElement(name = "send_yn_c") + private String sendYnC; + + /** + * 송신 일자 + * date : YYYYMMDDHH24MISS + */ + @XmlElement(name = "send_d") + private String sendD; + + /** + * 적용 일자: 필수 + * date + * interface DB->XML로 적용 시 sysdate(YYYYMMDDHH24MISS)로 생성 + */ + @XmlElement(name = "apply_d") + private String applyD; + + /** + * 완료 구분: 필수 + * char(1) + * 적용완료:Y OR N (default:N , 각 기관의 실 민원 DB에 반영 후 Y로 변경) + */ + @XmlElement(name = "apply_gubun_c") + private String applyGubunC; + + //------------------------------------------------------------------------------------ + /** + * 처리 구분1: 필수 + * varchar2(400) + * 0 / / 0 + */ + @XmlElement(name = "pcd_gubun_v") + private String pcdGubunV; + + /** + * 처리 구분2: 필수 + * varchar2(400) + */ + @XmlElement(name = "pcd_gubun2_v") + private String pcdGubun2V; + + /** + * 처리 구분3: 처리 결과시 필수 + * varchar2(400) + */ + @XmlElement(name = "pcd_gubun3_v") + private String pcdGubun3V; + //------------------------------------------------------------------------------------- + + /** + * xml 인터페이스 아이디: 필수 + * varchar2(10) + */ + @XmlElement(name = "ifid") + private String ifid; + + /** + * 소스 기관 코드: 필수 + * varchar2(7) + * 해당 연계 기관 코드 + */ + @XmlElement(name = "srcorgcd") + private String srcorgcd; + + /** + * 타겟 기관 코드: 필수 + * varchar2(7) + * 연계 기관에서 insert시 무조건 1140100 값을 넣어 준다 + */ + @XmlElement(name = "tgtorgcd") + private String tgtorgcd; + + + + + + + //---------------------------------------------------------------------------------------------------- + // 결과(응답) 처리 + //---------------------------------------------------------------------------------------------------- + /** + * 민원 요지: 결과 처리시 필수 + * varchar2(512) + * 민원요지를 입력하면 민원제목대신 민원요지를 표출 + */ + @XmlElement(name = "civil_gist_v") + private String civilGistV; + + /** + * 민원 처리 요약: 결과 처리시 필수 + * clob + * 처리를 요약하여 표시 + */ + @XmlElement(name = "civil_abstract_l") + private String civilAbstractL; + + /** + * 처리 부서 코드: 결과 처리시 필수 + * varchar2(7) + */ + @XmlElement(name = "pcd_dept_v") + private String pcdDeptV; + + /** + * 민원 처리 부서명: 결과 처리시 필수 + * varchar2(50) + */ + @XmlElement(name = "pcd_dept_nm_v") + private String pcdDeptNmV; + + /** + * 민원 처리 담당자 명: 결과 처리시 필수 + * varchar2(50) + */ + @XmlElement(name = "duty_id_v") + private String dutyIdV; + + /** + * 담당자 이메일: 결과 처리시 필수 + * varchar2(64) + */ + @XmlElement(name = "pcd_email_v") + private String pcdEmailV; + + /** + * 담당자 전화 번호: 결과 처리시 필수 + * varchar2(20) + */ + @XmlElement(name = "pcd_tel_v") + private String pcdTelV; + + /** + * 민원 처리 결과: 결과 처리시 필수 + * clob + */ + @XmlElement(name = "pcd_rst_cont_l") + private String pcdRstContL; + + /** + * 민원 처리 완료 일자: 결과 처리시 필수 + * varchar2(14) : YYYYMMDDHH24MISS + */ + @XmlElement(name = "do_reg_d") + private String doRegD; + + /** + * 민원 처리 결과 첨부 여부: 결과 처리시 필수 + * char(1) + * Y = 첨부, N = 미첨부(default) + */ + @XmlElement(name = "pcd_rst_cont_attach_yn_c") + private String pcdRstContAttachYnC; + + /** + * 민원 처리 첨부 파일 크기 + * number(10) + */ + @XmlElement(name = "pcd_file_size_n") + private String pcdFileSizeN; + + //------------------------------------------------------------------------ + /** + * 민원 처리 첨부 파일명1 + * varchar2(2000) + */ + @XmlElement(name = "pcd_file_path1_v") + private String pcdFilePath1V; + + /** + * 민원 처리 첨부 파일명2 + * varchar2(2000) + */ + @XmlElement(name = "pcd_file_path2_v") + private String pcdFilePath2V; + + /** + * 민원 처리 첨부 파일명3 + * varchar2(2000) + */ + @XmlElement(name = "pcd_file_path3_v") + private String pcdFilePath3V; + + /** + * 민원 처리 첨부 파일명4 + * varchar2(2000) + */ + @XmlElement(name = "pcd_file_path4_v") + private String pcdFilePath4V; + + /** + * 민원 처리 첨부 파일명5 + * varchar2(2000) + */ + @XmlElement(name = "pcd_file_path5_v") + private String pcdFilePath5V; + //---------------------------------------------------------------------- + + /** + * 민원 실 처리 기관 코드: 처리 결과시 필수 + * varchar2(7) + * ex)경기도 6410000 + */ + @XmlElement(name = "pcd_anc_code_v") + private String pcdAncCodeV; + + /** + * 민원 처리 기간 + * number(5) + */ + @XmlElement(name = "peti_proc_dur_n") + private String petiProcDurN; + + /** + * 처리 예정일 + * date + */ + @XmlElement(name = "peti_end_d") + private String petiEndD; +} + +