feat: 외부연계 주민신고 데이타 처리 진행
parent
a5a93d6ec2
commit
a30a2ead01
@ -0,0 +1,39 @@
|
||||
package kr.xit.fims.biz.ec.service;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import kr.xit.framework.biz.cmm.model.NatlNewspaperRcvXmlDto;
|
||||
import kr.xit.framework.support.util.xml.XmlParseUtils;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
@Slf4j
|
||||
@Service
|
||||
public class EcNatlNewspaperService {
|
||||
private NatlNewspaperRcvXmlDto natlNewspaperXmlDto;
|
||||
|
||||
public void saveEsbRvc(final List<String> fullFileList) {
|
||||
List<String> list = Arrays.asList(
|
||||
"D:/project_data/fims/01. 연계/01. 국민신문고/rcv/202209160959023e60d9$EPOUGA$1140100_2022091609485096255243399.xml"
|
||||
// ,"D:/project_data/fims/01. 연계/01. 국민신문고/rcv/202209160959269e166c$EPOUGA$1140100_2022091609490868474847710.xml"
|
||||
// ,"D:/project_data/fims/01. 연계/01. 국민신문고/rcv/2022091609590430a45c$EPOUGA$1140100_2022091609483801480139449.xml"
|
||||
// ,"D:/project_data/fims/01. 연계/01. 국민신문고/rcv/2022091609590685e4d0$EPOUGA$1140100_2022091609483205285052976.xml"
|
||||
// ,"D:/project_data/fims/01. 연계/01. 국민신문고/rcv/2022091609591011a94b$EPOUGA$1140100_2022091609484378849086728.xml"
|
||||
// ,"D:/project_data/fims/01. 연계/01. 국민신문고/rcv/20220916095908123eab$EPOUGA$1140100_2022091609484239715980892.xml"
|
||||
// ,"D:/project_data/fims/01. 연계/01. 국민신문고/rcv/202209160959384350e0$EPOUGA$1140100_2022091609485968983152594.xml"
|
||||
// ,"D:/project_data/fims/01. 연계/01. 국민신문고/rcv/20220916095854881357$EPOUGA$1140100_2022091609485673727045043.xml"
|
||||
// ,"D:/project_data/fims/01. 연계/01. 국민신문고/rcv/2022091609585009058a$EPOUGA$1140100_2022091609484095150560203.xml"
|
||||
// ,"D:/project_data/fims/01. 연계/01. 국민신문고/rcv/2022091609585264580e$EPOUGA$1140100_2022091609485381568241998.xml"
|
||||
);
|
||||
NatlNewspaperRcvXmlDto dto = XmlParseUtils.readXmlToObject(NatlNewspaperRcvXmlDto.class, list.get(0));
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
// public static void main(String[] args) {
|
||||
// getData(NatlNewspaperRcvXmlDto.class);
|
||||
// }
|
||||
}
|
@ -0,0 +1,81 @@
|
||||
package kr.xit.fims.biz.ec.web;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
import org.springframework.web.servlet.ModelAndView;
|
||||
|
||||
import kr.xit.fims.biz.cmm.FimsConst;
|
||||
import kr.xit.framework.biz.cmm.model.NatlNewspaperRcvXmlDto;
|
||||
import kr.xit.framework.core.constants.FrameworkConstants;
|
||||
import kr.xit.framework.support.util.AjaxMessageMapRenderer;
|
||||
import kr.xit.framework.support.util.constants.MessageKey;
|
||||
import kr.xit.framework.support.util.xml.XmlParseUtils;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
@Slf4j
|
||||
@Controller
|
||||
@RequestMapping(value = "/fims/biz/ec")
|
||||
public class EcNatlNewspaperMgtController {
|
||||
private NatlNewspaperRcvXmlDto natlNewspaperXmlDto;
|
||||
|
||||
|
||||
@RequestMapping(value = "/ecNatlNewspaperMgtForm")
|
||||
public void ecNatlNewspaperMgt(){
|
||||
}
|
||||
|
||||
@RequestMapping(value = "/ecNatlNewspaperFileSelPopup")
|
||||
public ModelAndView ecNatlNewspaperFileSelPopup(){
|
||||
return new ModelAndView(FimsConst.FIMS_JSP_BASE_PATH +"ec/ecNatlNewspaperFileSelPopup.popup");
|
||||
}
|
||||
|
||||
@RequestMapping(value = "/findDirFiles", consumes = {"multipart/form-data"})
|
||||
public ModelAndView findDirFiles(@RequestParam(required=false) final MultipartFile mf){
|
||||
return new ModelAndView(FimsConst.FIMS_JSP_BASE_PATH +"ec/ecNatlNewspaperFileSelPopup.popup");
|
||||
}
|
||||
|
||||
@PostMapping(value = "/saveNatlNewspaer", consumes = {"multipart/form-data"})
|
||||
//public String uploadZipCodeByExcel(MultipartHttpServletRequest request) {
|
||||
public ModelAndView saveNatlNewspaer(@RequestParam(required=false) final MultipartFile mf) {
|
||||
ModelAndView mav = new ModelAndView(FrameworkConstants.JSON_VIEW);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
AjaxMessageMapRenderer.success(mav, MessageKey.CMM_SUCCESS);
|
||||
return mav;
|
||||
|
||||
}
|
||||
|
||||
@RequestMapping(value = "/saveNatlNewspaper")
|
||||
public ModelAndView saveEsbRvc() {
|
||||
ModelAndView mav = new ModelAndView();
|
||||
List<String> list = Arrays.asList(
|
||||
"D:/project_data/fims/01. 연계/01. 국민신문고/rcv/202209160959023e60d9$EPOUGA$1140100_2022091609485096255243399.xml"
|
||||
// ,"D:/project_data/fims/01. 연계/01. 국민신문고/rcv/202209160959269e166c$EPOUGA$1140100_2022091609490868474847710.xml"
|
||||
// ,"D:/project_data/fims/01. 연계/01. 국민신문고/rcv/2022091609590430a45c$EPOUGA$1140100_2022091609483801480139449.xml"
|
||||
// ,"D:/project_data/fims/01. 연계/01. 국민신문고/rcv/2022091609590685e4d0$EPOUGA$1140100_2022091609483205285052976.xml"
|
||||
// ,"D:/project_data/fims/01. 연계/01. 국민신문고/rcv/2022091609591011a94b$EPOUGA$1140100_2022091609484378849086728.xml"
|
||||
// ,"D:/project_data/fims/01. 연계/01. 국민신문고/rcv/20220916095908123eab$EPOUGA$1140100_2022091609484239715980892.xml"
|
||||
// ,"D:/project_data/fims/01. 연계/01. 국민신문고/rcv/202209160959384350e0$EPOUGA$1140100_2022091609485968983152594.xml"
|
||||
// ,"D:/project_data/fims/01. 연계/01. 국민신문고/rcv/20220916095854881357$EPOUGA$1140100_2022091609485673727045043.xml"
|
||||
// ,"D:/project_data/fims/01. 연계/01. 국민신문고/rcv/2022091609585009058a$EPOUGA$1140100_2022091609484095150560203.xml"
|
||||
// ,"D:/project_data/fims/01. 연계/01. 국민신문고/rcv/2022091609585264580e$EPOUGA$1140100_2022091609485381568241998.xml"
|
||||
);
|
||||
NatlNewspaperRcvXmlDto dto = XmlParseUtils.readXmlToObject(NatlNewspaperRcvXmlDto.class, list.get(0));
|
||||
log.debug(dto.toString());
|
||||
return mav;
|
||||
}
|
||||
|
||||
|
||||
|
||||
// public static void main(String[] args) {
|
||||
// getData(NatlNewspaperRcvXmlDto.class);
|
||||
// }
|
||||
}
|
@ -1,272 +0,0 @@
|
||||
package kr.xit.framework.biz.cmm.model;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStreamReader;
|
||||
import java.io.StringReader;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Paths;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
import javax.xml.bind.JAXBContext;
|
||||
import javax.xml.bind.JAXBException;
|
||||
import javax.xml.bind.Marshaller;
|
||||
import javax.xml.bind.Unmarshaller;
|
||||
import javax.xml.bind.annotation.XmlElement;
|
||||
import javax.xml.bind.annotation.XmlRootElement;
|
||||
import javax.xml.parsers.DocumentBuilder;
|
||||
import javax.xml.parsers.DocumentBuilderFactory;
|
||||
|
||||
import org.json.JSONObject;
|
||||
import org.json.XML;
|
||||
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;
|
||||
|
||||
import com.sun.xml.internal.ws.developer.JAXBContextFactory;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
public class NatlNewspaper {
|
||||
private NatlNewspaperXmlDto natlNewspaperXmlDto;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
public static void main(String[] args) {
|
||||
// String fileFullPath = "file:///Users/minuk/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 = "/Users/minuk/project_data/fims/01. 연계/01. 국민신문고/rcv/202209160959023e60d9$EPOUGA$1140100_2022091609485096255243399.xml";
|
||||
// String jsonStr = null;
|
||||
// try(BufferedReader reader = new BufferedReader(new InputStreamReader(Files.newInputStream(Paths.get(fpath)),
|
||||
// StandardCharsets.UTF_8) , 1024*1024*2)) {
|
||||
// //JSONObject json = XML.toJSONObject(reader);
|
||||
// jsonStr = XML.toString(reader);
|
||||
// System.out.println(jsonStr);
|
||||
// }catch(IOException fe){
|
||||
//
|
||||
// }
|
||||
//
|
||||
// JAXBContext context = null;
|
||||
// try {
|
||||
// context = JAXBContext.newInstance(NatlNewspaperXmlDto.class);
|
||||
// Unmarshaller unmarshaller = context.createUnmarshaller();
|
||||
// NatlNewspaperXmlDto unmarshal = (NatlNewspaperXmlDto)unmarshaller.unmarshal(new StringReader(jsonStr));
|
||||
// System.out.println(unmarshal);
|
||||
// } catch (JAXBException e) {
|
||||
// throw new RuntimeException(e);
|
||||
// }
|
||||
|
||||
|
||||
try {
|
||||
Person person = new Person("jaxb", "jaxb@hello.com");
|
||||
// JAXBContext 생성 & marshaller 생성
|
||||
JAXBContext context = JAXBContext.newInstance(Person.class);
|
||||
Marshaller marshaller = context.createMarshaller();
|
||||
// 보기 좋게 출력해주는 옵션
|
||||
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
|
||||
// 표준 출력으로 결과를 보여준다.
|
||||
marshaller.marshal(person, System.out);
|
||||
|
||||
//JAXBContext context = JAXBContextFactory.createContext(new Class[]{Person.class}, someProperties);
|
||||
|
||||
List<String> list = Arrays.asList(
|
||||
"/Users/minuk/project_data/fims/01. 연계/01. 국민신문고/rcv/202209160959023e60d9$EPOUGA$1140100_2022091609485096255243399.xml"
|
||||
,"/Users/minuk/project_data/fims/01. 연계/01. 국민신문고/rcv/202209160959269e166c$EPOUGA$1140100_2022091609490868474847710.xml"
|
||||
,"/Users/minuk/project_data/fims/01. 연계/01. 국민신문고/rcv/2022091609590430a45c$EPOUGA$1140100_2022091609483801480139449.xml"
|
||||
,"/Users/minuk/project_data/fims/01. 연계/01. 국민신문고/rcv/2022091609590685e4d0$EPOUGA$1140100_2022091609483205285052976.xml"
|
||||
,"/Users/minuk/project_data/fims/01. 연계/01. 국민신문고/rcv/2022091609591011a94b$EPOUGA$1140100_2022091609484378849086728.xml"
|
||||
,"/Users/minuk/project_data/fims/01. 연계/01. 국민신문고/rcv/20220916095908123eab$EPOUGA$1140100_2022091609484239715980892.xml"
|
||||
,"/Users/minuk/project_data/fims/01. 연계/01. 국민신문고/rcv/202209160959384350e0$EPOUGA$1140100_2022091609485968983152594.xml"
|
||||
,"/Users/minuk/project_data/fims/01. 연계/01. 국민신문고/rcv/20220916095854881357$EPOUGA$1140100_2022091609485673727045043.xml"
|
||||
,"/Users/minuk/project_data/fims/01. 연계/01. 국민신문고/rcv/2022091609585009058a$EPOUGA$1140100_2022091609484095150560203.xml"
|
||||
,"/Users/minuk/project_data/fims/01. 연계/01. 국민신문고/rcv/2022091609585264580e$EPOUGA$1140100_2022091609485381568241998.xml"
|
||||
);
|
||||
|
||||
list.forEach((path) -> {
|
||||
try{
|
||||
// JAXBContext 생성 & marshaller 생성
|
||||
FileInputStream fileInputStream = new FileInputStream(path);
|
||||
JAXBContext jaxbContext = JAXBContext.newInstance(NatlNewspaperXmlDto.class);
|
||||
Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
|
||||
unmarshaller.setEventHandler(new CustomEventHandler());
|
||||
|
||||
// When
|
||||
NatlNewspaperXmlDto xmlListTag = (NatlNewspaperXmlDto)unmarshaller.unmarshal(fileInputStream);
|
||||
System.out.println(xmlListTag.toString());
|
||||
// 표준 출력으로 결과를 보여준다.
|
||||
//unmarshaller.unmarshal(xmlListTag);
|
||||
|
||||
|
||||
//AppendFileInfo fileInfo = (AppendFileInfo)unmarshaller.unmarshal(fileInputStream);
|
||||
//System.out.println(fileInfo.toString());
|
||||
|
||||
fileInputStream.close();
|
||||
}catch(Exception e){
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
|
||||
}catch(Exception e){
|
||||
|
||||
}
|
||||
// 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;
|
||||
}
|
||||
}
|
||||
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@XmlRootElement
|
||||
private static class Person {
|
||||
@XmlElement
|
||||
private String name;
|
||||
@XmlElement
|
||||
private String email;
|
||||
|
||||
// 생성자, getter, setter 생략
|
||||
}
|
||||
}
|
@ -0,0 +1,428 @@
|
||||
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 javax.xml.bind.annotation.XmlTransient;
|
||||
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import lombok.ToString;
|
||||
|
||||
/**
|
||||
* <pre>
|
||||
* 공공기관 interface
|
||||
* XmlRootElement
|
||||
* JAXBContext에 등록
|
||||
* XmlAccessorType
|
||||
* FIELD - 클래스의 모든 필드(static이 아니고 transient가 아닌)를 모두 XML에 바인딩
|
||||
* NONE - 어노테이션으로 지정하지 않는한 모든 필드는 XML에 바운딩되지 않는다.
|
||||
* PROPERTY - getter/setter를 가진 모든 필드들은 자동으로 XML에 바운드된다.
|
||||
* PUBLIC_MEMBER - 모든 public getter/setter들은 자동으로 XML에 바운드된다.
|
||||
*
|
||||
* 각 필드 comment중 이관 / 처리결과 / 반송에 따른 값이 차이가 있는경우
|
||||
* 이관 / 처리결과 / 반송 순서로 각각 내용 표시
|
||||
* </pre>
|
||||
*/
|
||||
@Getter
|
||||
@Setter
|
||||
@ToString
|
||||
@XmlRootElement(name = "dmndinfo")
|
||||
@XmlAccessorType(XmlAccessType.FIELD)
|
||||
public class NatlNewspaperRcvXmlDto { //extends ExtlEsbDataType {
|
||||
|
||||
/**
|
||||
* 인터페이스 키: 필수
|
||||
* 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;
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
/**
|
||||
* 등록 일자: 필수
|
||||
* 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;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@XmlElement(name = "apndfilinfo")
|
||||
private AppendFileInfo appendFileInfo;
|
||||
//-------------------------------------------------------------------------------------
|
||||
|
||||
|
||||
|
||||
@XmlElement(name = "peti_path_gubun_c")
|
||||
private String petiPathGubunC;
|
||||
|
||||
/**
|
||||
* 처리 부서 코드: 결과 처리시 필수
|
||||
* 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;
|
||||
|
||||
|
||||
|
||||
|
||||
//-------------------------------------------------------------------------------------
|
||||
// 선택사항
|
||||
//-------------------------------------------------------------------------------------
|
||||
/**
|
||||
* 접수 일자
|
||||
* 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;
|
||||
|
||||
/**
|
||||
* 민원 실 처리 기관 코드: 처리 결과시 필수
|
||||
* 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;
|
||||
|
||||
@XmlTransient
|
||||
private String registDt;
|
||||
@XmlTransient
|
||||
private String register;
|
||||
}
|
||||
|
||||
|
@ -1,18 +0,0 @@
|
||||
package kr.xit.framework.support.util.constants;
|
||||
|
||||
/**
|
||||
* @author jeonghoyeol
|
||||
*/
|
||||
public abstract class MessageGroupKey {
|
||||
|
||||
|
||||
/**
|
||||
* EndUser 에게 다국어 메시지를 노출하기 위해 사용되는 메시지 키 그룹이다.
|
||||
*
|
||||
* EndUser 에게 노출 되는 메시지 메시지 키 코드는 [메세지그룹키].[메시지키] 형태로 구성되는 데 이 때
|
||||
* [메시지그룹키] 값은 반드시 'user' 라는 prefix 값으로 시작해야 한다.
|
||||
* 예) user.cmm.success.system
|
||||
*
|
||||
*/
|
||||
public static final String MESSAGE_CATEGORY_USER = "user";
|
||||
}
|
@ -0,0 +1,104 @@
|
||||
package kr.xit.framework.support.util.xml;
|
||||
|
||||
import java.io.FileInputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.StringWriter;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
import javax.xml.bind.JAXBContext;
|
||||
import javax.xml.bind.JAXBException;
|
||||
import javax.xml.bind.Marshaller;
|
||||
import javax.xml.bind.Unmarshaller;
|
||||
|
||||
import kr.xit.framework.biz.cmm.model.NatlNewspaperRcvXmlDto;
|
||||
import kr.xit.framework.biz.cmm.model.NatlNewspaperSendXmlDto;
|
||||
import kr.xit.framework.support.exception.BizRuntimeException;
|
||||
import kr.xit.framework.support.util.constants.MessageKey;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
@Slf4j
|
||||
public class XmlParseUtils {
|
||||
public static <T> T readXmlToObject(final Class<T> t, final String fullFilePath){
|
||||
|
||||
// JAXBContext 생성 & marshaller 생성
|
||||
try(FileInputStream fileInputStream = new FileInputStream(fullFilePath)) {
|
||||
JAXBContext jaxbContext = JAXBContext.newInstance(t);
|
||||
Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
|
||||
//JAXBContext context = JAXBContextFactory.createContext(new Class[]{clz}, someProperties);
|
||||
unmarshaller.setEventHandler(new JAXCustomEventHandler());
|
||||
|
||||
Object o = unmarshaller.unmarshal(fileInputStream);
|
||||
return t.cast(o);
|
||||
}catch(IOException | JAXBException e){
|
||||
throw BizRuntimeException.create(MessageKey.CUSTOM_MSG, e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
@SuppressWarnings("UnusedReturnValue")
|
||||
public static <T> String readObjectToXml(final T t, final Class<T> clz){
|
||||
StringWriter sw = new StringWriter();
|
||||
|
||||
// xml 생성
|
||||
try{
|
||||
// JAXBContext 생성 & marshaller 생성
|
||||
JAXBContext context = JAXBContext.newInstance(clz);
|
||||
Marshaller marshaller = context.createMarshaller();
|
||||
marshaller.setEventHandler(new JAXCustomEventHandler());
|
||||
// 옵션 -------------------------------------------------
|
||||
//standalone="yes"
|
||||
//xmlStreamWriter.writeProcessingInstruction("xml", "version=\"1.0\" encoding=\"UTF-8\"");
|
||||
|
||||
// xmlHeader 제거 : standalone="yes"가 붙어서 ...
|
||||
marshaller.setProperty(Marshaller.JAXB_FRAGMENT, true);
|
||||
marshaller.setProperty(Marshaller.JAXB_ENCODING, StandardCharsets.UTF_8.name());
|
||||
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
|
||||
|
||||
// xmlHeader write
|
||||
sw.write("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n");
|
||||
// xml 파일 생성
|
||||
marshaller.marshal(t, sw);
|
||||
}catch(JAXBException e){
|
||||
throw BizRuntimeException.create(MessageKey.CUSTOM_MSG, e.getMessage());
|
||||
}
|
||||
return sw.toString();
|
||||
}
|
||||
|
||||
|
||||
public static void main(String[] args) {
|
||||
NatlNewspaperSendXmlDto sendDto = NatlNewspaperSendXmlDto.builder()
|
||||
.interfaceSeqN("999999")
|
||||
.pcdRstContL("1. 교통질서 확립에 힘써주신 점에 대해 감사드립니다.\n"
|
||||
+ "\n"
|
||||
+ "2. 귀하께서 안전신문고를 통해 신청하신 민원에 대한 검토 결과를 다음과 같이 알려드립니다.\n"
|
||||
+ "\n"
|
||||
+ "3. 귀하의 민원내용은 불법 주?정차 신고에 관한 것으로 판단됩니다.\n"
|
||||
+ "\n"
|
||||
+ "4. 귀하의 신고에 대해 검토한 결과는 다음과 같습니다.\n"
|
||||
+ " 가. 해당 차량은 ?도로교통법?제32조, 제33조, 제34조, 제35조에 의거한 불법 주?정차 차량으로 판단됩니다.\n"
|
||||
+ " 나. 따라서, 위반 차량에 대해 주?정차 위반 과태료 부과 처분이 이루어졌음을 알려드립니다.\n"
|
||||
+ "\n"
|
||||
+ "5. 안전을 위한 시민 정신에 감사드리며, 답변 내용에 대한 추가 설명이 필요한 경우 군포시청 차량관리과 주차단속팀 박효주 주무관(☏031-390-0291)에게 연락 주시면 친절히 안내해 드리도록 하겠습니다. 감사합니다.")
|
||||
.addressV("ldlldl")
|
||||
.applyGubunC("Y").build();
|
||||
String xmlStr = XmlParseUtils.readObjectToXml(sendDto, NatlNewspaperSendXmlDto.class);
|
||||
log.debug(xmlStr);
|
||||
log.debug("\n\n\n");
|
||||
|
||||
List<String> list = Arrays.asList(
|
||||
"D:/project_data/fims/01. 연계/01. 국민신문고/rcv/202209160959023e60d9$EPOUGA$1140100_2022091609485096255243399.xml"
|
||||
// ,"D:/project_data/fims/01. 연계/01. 국민신문고/rcv/202209160959269e166c$EPOUGA$1140100_2022091609490868474847710.xml"
|
||||
// ,"D:/project_data/fims/01. 연계/01. 국민신문고/rcv/2022091609590430a45c$EPOUGA$1140100_2022091609483801480139449.xml"
|
||||
// ,"D:/project_data/fims/01. 연계/01. 국민신문고/rcv/2022091609590685e4d0$EPOUGA$1140100_2022091609483205285052976.xml"
|
||||
// ,"D:/project_data/fims/01. 연계/01. 국민신문고/rcv/2022091609591011a94b$EPOUGA$1140100_2022091609484378849086728.xml"
|
||||
// ,"D:/project_data/fims/01. 연계/01. 국민신문고/rcv/20220916095908123eab$EPOUGA$1140100_2022091609484239715980892.xml"
|
||||
// ,"D:/project_data/fims/01. 연계/01. 국민신문고/rcv/202209160959384350e0$EPOUGA$1140100_2022091609485968983152594.xml"
|
||||
// ,"D:/project_data/fims/01. 연계/01. 국민신문고/rcv/20220916095854881357$EPOUGA$1140100_2022091609485673727045043.xml"
|
||||
// ,"D:/project_data/fims/01. 연계/01. 국민신문고/rcv/2022091609585009058a$EPOUGA$1140100_2022091609484095150560203.xml"
|
||||
// ,"D:/project_data/fims/01. 연계/01. 국민신문고/rcv/2022091609585264580e$EPOUGA$1140100_2022091609485381568241998.xml"
|
||||
);
|
||||
NatlNewspaperRcvXmlDto dto = XmlParseUtils.readXmlToObject(NatlNewspaperRcvXmlDto.class, list.get(0));
|
||||
log.debug(dto.toString());
|
||||
}
|
||||
}
|
@ -0,0 +1,100 @@
|
||||
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
|
||||
<%@ include file="/WEB-INF/jsp/framework/taglibs.jsp" %>
|
||||
|
||||
<div class="popup" style="min-width: 100%;">
|
||||
<div class="popup_inner" style="max-width: 800px;">
|
||||
<p class="pop_title">주민 신고(국민신문고) 접수 파일 선택</p>
|
||||
<form>
|
||||
<table class="tbl03">
|
||||
<caption>주민 신고 접수 파일 선택</caption>
|
||||
<colgroup>
|
||||
<col style="width: 40%"/>
|
||||
<col/>
|
||||
</colgroup>
|
||||
<tbody>
|
||||
<tr>
|
||||
<th class="required" scope="row" nowrap >
|
||||
<label for="file">주민 신고 접수 파일</label>
|
||||
</th>
|
||||
<td>
|
||||
<input type="file" name="file" id="file" accept="application/xml" style="width: 100%"/>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th class="required" scope="row" nowrap >
|
||||
<label for="file">주민 신고 접수 파일</label>
|
||||
</th>
|
||||
<td>
|
||||
<input type="file" name="fileFolder" webkitdirectory style="width: 100%"/>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
</form>
|
||||
<div class="file_list">
|
||||
<div class="popup_btn">
|
||||
<span class="flr p_flr">
|
||||
<a href="#" class="btn blue" id="btnSave">파일 처리</a>
|
||||
<a href="#" class="btn lightgray" id="btnClose" onclick="window.close(); return false;">닫기</a>
|
||||
</span>
|
||||
</div>
|
||||
<!-- //등록버튼 -->
|
||||
</div>
|
||||
</div>
|
||||
<!-- //popup -->
|
||||
|
||||
<script type="text/javaScript">
|
||||
const input = document.querySelector('input[name=fileFolder]');
|
||||
const preview = document.querySelector('.file_list');
|
||||
|
||||
$('input:file[name=fileFolder]').on('change', () => {
|
||||
const selectedFiles = input.files;
|
||||
const list = document.createElement('ul');
|
||||
preview.appendChild(list);
|
||||
|
||||
for(const file of selectedFiles) {
|
||||
const listItem = document.createElement('li');
|
||||
const summary = document.createElement('div');
|
||||
|
||||
summary.textContent = file.webkitRelativePath;
|
||||
|
||||
listItem.appendChild(summary);
|
||||
list.appendChild(listItem);
|
||||
}
|
||||
})
|
||||
|
||||
$('#btnSave').on('click', () => {
|
||||
const uploadPath = $("#file")[0];
|
||||
console.log("uploadFile: ", uploadPath.files)
|
||||
|
||||
if(uploadPath.files.length === 0){
|
||||
alert("파일은 선택해주세요");
|
||||
return false;
|
||||
}
|
||||
const formData = new FormData();
|
||||
formData.append("uploadPath", uploadPath.files[0]);
|
||||
|
||||
for(let key of formData.keys()) {
|
||||
console.log(key);
|
||||
}
|
||||
for(let value of formData.values()) {
|
||||
console.log(value);
|
||||
}
|
||||
|
||||
$.ajax({
|
||||
type:"POST",
|
||||
url: '<c:url value="/framework/biz/mng/code/uploadZipCodeByExcel.do"/>',
|
||||
processData: false,
|
||||
contentType: false,
|
||||
data: formData,
|
||||
success: function(res){
|
||||
if(res.result) alert('실제 업로드 처리 구현 필요');
|
||||
},
|
||||
err: function(err){
|
||||
console.log("err:", err)
|
||||
}
|
||||
})
|
||||
})
|
||||
|
||||
</script>
|
@ -0,0 +1,222 @@
|
||||
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
|
||||
<%@ include file="/WEB-INF/jsp/framework/taglibs.jsp" %>
|
||||
|
||||
<form id="frmSearch" name="frmSearch">
|
||||
<div class="search r2">
|
||||
<table>
|
||||
<caption>검색조건</caption>
|
||||
<colgroup>
|
||||
<col style="width: 400px;"/>
|
||||
<col/>
|
||||
<col/>
|
||||
<col/>
|
||||
<col/>
|
||||
<col/>
|
||||
<col/>
|
||||
</colgroup>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td colspan="5">
|
||||
<select name="searchCondition" id="searchCondition" title="조회조건" class="selectBox" onchange="fnBiz.onSearchChange()">
|
||||
<option value="tmplatNm">템플릿명</option>
|
||||
<option value="tmplatSeCode">템플릿구분</option>
|
||||
</select>
|
||||
<input name="searchKeyword" title="검색어" type="text"/>
|
||||
<code:select codeId="XIT005" id="searchKeyword" name="searchKeyword" title="템플릿구분" cls="selectBox" alt="selectBox tag" display="false" disabled="true"/>
|
||||
</td>
|
||||
<td colspan="6">
|
||||
<input type="button" id="btnSearch" class="btn_search" title="검색" value="검색"/>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</form>
|
||||
<!-- //검색 -->
|
||||
|
||||
<div class="page_btn">
|
||||
<span class="fll">
|
||||
<div class="list clearfix" id="totCnt">전체 ㅣ <span></span></div>
|
||||
</span>
|
||||
<span class="flr">
|
||||
<a href="#" class="btn darkgray" id="btnRegist" title="템플릿 등록">등록</a>
|
||||
</span>
|
||||
</div>
|
||||
<!-- //버튼 및 페이지정보 -->
|
||||
|
||||
<!-- 데이터 출력 -->
|
||||
<div id="grid"></div>
|
||||
|
||||
<script type="text/javaScript">
|
||||
/**************************************************************************
|
||||
* Global Variable
|
||||
**************************************************************************/
|
||||
let GRID = null;
|
||||
var callbackSearch = () => fnBiz.search();
|
||||
|
||||
|
||||
/* *******************************
|
||||
* Biz function
|
||||
******************************* */
|
||||
const fnBiz = {
|
||||
search: () => {
|
||||
GRID.reloadData();
|
||||
}
|
||||
,pagePopup: function(flag, params){
|
||||
let url = '<c:url value="/framework/biz/mng/bbs/mngBoardTmplMgtPopup.do"/>';
|
||||
let popTitle;
|
||||
let popOption = {width: 530, height:410};
|
||||
switch (flag) {
|
||||
case "add": //등록
|
||||
popTitle = "템플릿 등록";
|
||||
break;
|
||||
case "detail": //상세
|
||||
popTitle = "템플릿 상세";
|
||||
break;
|
||||
case "file":
|
||||
url = '<c:url value="/fims/biz/ec/ecNatlNewspaperFileSelPopup.do"/>';
|
||||
popOption = {width: 800, height:300};
|
||||
popTitle = "주민 신고 데이타 선택";
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
CmmPopup.open(url, params, popOption, popTitle);
|
||||
}
|
||||
,onClickGrid: function(props){
|
||||
const rowData = props.grid.getRow(props.rowKey);
|
||||
fnBiz.pagePopup('detail', rowData);
|
||||
}
|
||||
,onSearchChange: () => {
|
||||
if($('#searchCondition').val() === 'tmplatSeCode'){
|
||||
$('select[name="searchKeyword"]')
|
||||
.css('display', 'inline-block')
|
||||
.attr('disabled', false);
|
||||
$('input[name="searchKeyword"]')
|
||||
.css('display', 'none')
|
||||
.attr('disabled', true);
|
||||
}else{
|
||||
$('select[name="searchKeyword"]')
|
||||
.css('display', 'none')
|
||||
.attr('disabled', true);
|
||||
$('input[name="searchKeyword"]')
|
||||
.css('display', 'inline-block')
|
||||
.attr('disabled', false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**************************************************************************
|
||||
* event
|
||||
**************************************************************************/
|
||||
$(() => {
|
||||
$('#btnSearch').on('click', () => fnBiz.search());
|
||||
|
||||
$('#btnRegist').on('click', () => {
|
||||
fnBiz.pagePopup('file');
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
/* *******************************
|
||||
* Grid
|
||||
******************************* */
|
||||
const initGrid = () => {
|
||||
const gridColumns = [
|
||||
{
|
||||
header: '템플릿명',
|
||||
name: 'tmplatNm',
|
||||
minWidth: 200,
|
||||
sortable: true,
|
||||
sortingType: 'desc',
|
||||
//align: 'center',
|
||||
renderer: {
|
||||
type: CustomButtonRenderer,
|
||||
options: {
|
||||
formatter: (props)=>{
|
||||
return {
|
||||
formatter: props.grid.getRow(props.rowKey).tmplatNm
|
||||
,element: "text"
|
||||
}
|
||||
}
|
||||
,eventFunction: fnBiz.onClickGrid
|
||||
,eventType: "click"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
header: '템플릿구분',
|
||||
name: 'tmplatSeCodeNm',
|
||||
width: 80,
|
||||
sortable: false,
|
||||
align: 'center'
|
||||
},
|
||||
{
|
||||
header: '템플릿경로',
|
||||
name: 'tmplatCours',
|
||||
minWidth: 200,
|
||||
sortable: false,
|
||||
//align: 'left'
|
||||
},
|
||||
{
|
||||
header: '사용여부',
|
||||
name: 'useAt',
|
||||
width: 60,
|
||||
sortable: false,
|
||||
align: 'center',
|
||||
formatter: 'listItemText',
|
||||
editable: false,
|
||||
editor: {
|
||||
type: 'select', //select, radio, checkbox, text
|
||||
options: {
|
||||
listItems: [
|
||||
{value: 'Y', text: '사용'},
|
||||
{value: 'N', text: '미사용'}
|
||||
]
|
||||
}
|
||||
},
|
||||
},
|
||||
{
|
||||
header: '등록일자',
|
||||
name: 'frstRegisterPnttm',
|
||||
width: 160,
|
||||
sortable: false,
|
||||
align: 'center',
|
||||
formatter({value}){
|
||||
return setDateTimeFmt(value);
|
||||
}
|
||||
}
|
||||
];
|
||||
|
||||
const gridOptions = {
|
||||
el: 'grid',
|
||||
rowHeaders: ['rowNum'],
|
||||
columns: gridColumns
|
||||
};
|
||||
|
||||
const gridDatasource = {
|
||||
initialRequest: true, // 화면 load시 조회 안함 - default
|
||||
api: {
|
||||
readData: {
|
||||
url: '<c:url value="/framework/biz/mng/bbs/findBoardTmpls.do"/>'
|
||||
,serializer: (params) => {
|
||||
const schKey = $('#searchCondition').val();
|
||||
let schValue = $('input[name=searchKeyword]').val();
|
||||
if(schKey === 'tmplatSeCode') schValue = $('select[name=searchKeyword]').val();
|
||||
return getPageParam({[schKey]: schValue}, params);
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
GRID = TuiGrid.of(gridOptions, gridDatasource, (res) => {
|
||||
});
|
||||
}
|
||||
|
||||
/**************************************************************************
|
||||
* initialize
|
||||
**************************************************************************/
|
||||
$(document).ready(function(){
|
||||
initGrid();
|
||||
});
|
||||
</script>
|
Loading…
Reference in New Issue