diff --git a/src/main/java/kcc/com/uss/ion/gw/service/GWManualService.java b/src/main/java/kcc/com/uss/ion/gw/service/GWManualService.java new file mode 100644 index 00000000..b4027ccc --- /dev/null +++ b/src/main/java/kcc/com/uss/ion/gw/service/GWManualService.java @@ -0,0 +1,15 @@ +package kcc.com.uss.ion.gw.service; + +import java.util.List; + +public interface GWManualService { + + public List selectHolidayList(GWManualVO gWManualVO) throws Exception; + + public void deleteHoliday(GWManualVO gWManualVO) throws Exception; + + public void insertHoliday(GWManualVO gWManualVO) throws Exception; + + public int selectHolidayCnt(GWManualVO gWManualVO) throws Exception; + +} diff --git a/src/main/java/kcc/com/uss/ion/gw/service/GWManualVO.java b/src/main/java/kcc/com/uss/ion/gw/service/GWManualVO.java new file mode 100644 index 00000000..693d0b6a --- /dev/null +++ b/src/main/java/kcc/com/uss/ion/gw/service/GWManualVO.java @@ -0,0 +1,78 @@ +package kcc.com.uss.ion.gw.service; + +import java.io.Serializable; + +import kcc.com.cmm.ComDefaultVO; + +public class GWManualVO extends ComDefaultVO implements Serializable { + + private static final long serialVersionUID = 5641887401063483713L; + + public String locdate = ""; //날짜 + public String dateKind = ""; //날짜종류 + public String dateName = ""; //날짜명 + public String holidayYn = ""; //공휴일 여부 + public String delYn = ""; //삭제여부 + public String regDt = ""; //등록일 + public String updDt = ""; //변경일 + + public String sdt = ""; //기간 계산 - 시작일 + public String edt = ""; //기간 계산 - 종료일 + + public String getLocdate() { + return locdate; + } + public void setLocdate(String locdate) { + this.locdate = locdate; + } + public String getDateKind() { + return dateKind; + } + public void setDateKind(String dateKind) { + this.dateKind = dateKind; + } + public String getDateName() { + return dateName; + } + public void setDateName(String dateName) { + this.dateName = dateName; + } + public String getHolidayYn() { + return holidayYn; + } + public void setHolidayYn(String holidayYn) { + this.holidayYn = holidayYn; + } + public String getDelYn() { + return delYn; + } + public void setDelYn(String delYn) { + this.delYn = delYn; + } + public String getRegDt() { + return regDt; + } + public void setRegDt(String regDt) { + this.regDt = regDt; + } + public String getUpdDt() { + return updDt; + } + public void setUpdDt(String updDt) { + this.updDt = updDt; + } + public String getSdt() { + return sdt; + } + public void setSdt(String sdt) { + this.sdt = sdt; + } + public String getEdt() { + return edt; + } + public void setEdt(String edt) { + this.edt = edt; + } + + +} diff --git a/src/main/java/kcc/com/uss/ion/gw/service/impl/GWManualDAO.java b/src/main/java/kcc/com/uss/ion/gw/service/impl/GWManualDAO.java new file mode 100644 index 00000000..8b87a55a --- /dev/null +++ b/src/main/java/kcc/com/uss/ion/gw/service/impl/GWManualDAO.java @@ -0,0 +1,28 @@ +package kcc.com.uss.ion.gw.service.impl; + +import java.util.List; + +import org.springframework.stereotype.Repository; + +import egovframework.rte.psl.dataaccess.EgovAbstractDAO; +import kcc.com.uss.ion.gw.service.GWManualVO; + +@Repository("gWManualDAO") +public class GWManualDAO extends EgovAbstractDAO { + public List selectHolidayList(GWManualVO gWManualVO) throws Exception { + return (List) list("gWManualDAO.selectHolidayList", gWManualVO); + } + + public void deleteHoliday(GWManualVO gWManualVO) throws Exception { + update("gWManualDAO.deleteHoliday", gWManualVO); + } + + public void insertHoliday(GWManualVO gWManualVO) throws Exception { + update("gWManualDAO.insertHoliday", gWManualVO); + } + + public int selectHolidayCnt(GWManualVO gWManualVO) throws Exception { + return (Integer) select("gWManualDAO.selectHolidayCnt", gWManualVO); + } + +} diff --git a/src/main/java/kcc/com/uss/ion/gw/service/impl/GWManualServiceImpl.java b/src/main/java/kcc/com/uss/ion/gw/service/impl/GWManualServiceImpl.java new file mode 100644 index 00000000..d23618f2 --- /dev/null +++ b/src/main/java/kcc/com/uss/ion/gw/service/impl/GWManualServiceImpl.java @@ -0,0 +1,38 @@ +package kcc.com.uss.ion.gw.service.impl; + +import java.util.List; + +import javax.annotation.Resource; + +import org.springframework.stereotype.Service; + +import egovframework.rte.fdl.cmmn.EgovAbstractServiceImpl; +import kcc.com.uss.ion.gw.service.GWManualService; +import kcc.com.uss.ion.gw.service.GWManualVO; + +@Service("gWManualService") +public class GWManualServiceImpl extends EgovAbstractServiceImpl implements GWManualService{ + + @Resource(name="gWManualDAO") + private GWManualDAO gWManualDAO; + + @Override + public List selectHolidayList(GWManualVO gWManualVO) throws Exception { + return gWManualDAO.selectHolidayList(gWManualVO); + } + + @Override + public void deleteHoliday(GWManualVO gWManualVO) throws Exception { + gWManualDAO.deleteHoliday(gWManualVO); + } + + @Override + public void insertHoliday(GWManualVO gWManualVO) throws Exception { + gWManualDAO.insertHoliday(gWManualVO); + } + + @Override + public int selectHolidayCnt(GWManualVO gWManualVO) throws Exception { + return gWManualDAO.selectHolidayCnt(gWManualVO); + } +} diff --git a/src/main/java/kcc/com/uss/ion/gw/web/GWManualController.java b/src/main/java/kcc/com/uss/ion/gw/web/GWManualController.java new file mode 100644 index 00000000..87ce2e17 --- /dev/null +++ b/src/main/java/kcc/com/uss/ion/gw/web/GWManualController.java @@ -0,0 +1,167 @@ +package kcc.com.uss.ion.gw.web; + +import java.io.BufferedReader; +import java.io.InputStreamReader; +import java.io.StringReader; +import java.net.HttpURLConnection; +import java.net.URL; +import java.net.URLEncoder; +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; +import java.util.ArrayList; +import java.util.List; + +import javax.annotation.Resource; +import javax.servlet.http.HttpSession; +import javax.xml.parsers.DocumentBuilder; +import javax.xml.parsers.DocumentBuilderFactory; + +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Controller; +import org.springframework.ui.ModelMap; +import org.springframework.web.bind.annotation.ModelAttribute; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.servlet.mvc.support.RedirectAttributes; +import org.w3c.dom.Document; +import org.w3c.dom.Element; +import org.w3c.dom.NodeList; +import org.xml.sax.InputSource; + +import kcc.com.uss.ion.hld.service.HolidayService; +import kcc.com.uss.ion.hld.service.HolidayVO; + + + +/** + * @author User + * gw api 연동이 실패한 경우 관리자가 수동으로 처리 하는 controller + */ + +@Controller +public class GWManualController { + + @Resource(name = "holidayService") + private HolidayService holidayService; + + @RequestMapping(value="/uss/gwmanual/selectGWManualList.do") + public String selectHolidayList(@ModelAttribute("holidayVO") HolidayVO holidayVO,ModelMap model, HttpSession session)throws Exception{ + //현재년도 가져오기 + LocalDate now = LocalDate.now(); + int nowYear = now.getYear(); + String nowYearStr = String.valueOf(nowYear); + model.addAttribute("nowYearStr", nowYearStr); + + if("".equals(holidayVO.getSearchYear())) { + holidayVO.setSearchYear(nowYearStr); + } + List holidayList = holidayService.selectHolidayList(holidayVO); + model.addAttribute("holidayList", holidayList); + return "/com/gwmanual/gwManualList"; + } + + @RequestMapping(value="/uss/holiday/deleteHoliday.do") + public String deleteHoliday(@ModelAttribute("holidayVO") HolidayVO holidayVO, RedirectAttributes redirectAttributes)throws Exception{ + holidayService.deleteHoliday(holidayVO); + redirectAttributes.addAttribute("searchYear", holidayVO.getSearchYear()); + return "redirect:/uss/holiday/selectHolidayList.do"; + } + @RequestMapping(value="/uss/holiday/insertViewHoliday.do") + public String insertViewHoliday(@ModelAttribute("holidayVO") HolidayVO holidayVO)throws Exception{ + + return "/com/holiday/holidayInsert"; + } + + @RequestMapping(value="/uss/holiday/insertHoliday.do") + public String insertHoliday(@ModelAttribute("holidayVO") HolidayVO holidayVO, RedirectAttributes redirectAttributes)throws Exception{ + holidayService.insertHoliday(holidayVO); + return "redirect:/uss/holiday/selectHolidayList.do"; + } + + @RequestMapping(value="/uss/holiday/insertHolidayAPI.do") + public String insertHolidayAPI(@ModelAttribute("holidayVO") HolidayVO holidayVO, RedirectAttributes redirectAttributes)throws Exception{ + StringBuilder urlBuilder = new StringBuilder("http://apis.data.go.kr/B090041/openapi/service/SpcdeInfoService/getRestDeInfo"); /*URL*/ + urlBuilder.append("?" + URLEncoder.encode("serviceKey","UTF-8") + "=qC21K3oaxizQNSTba2aKLXQY8PdMn8N0GPYtjhnOUETJIlvcZ4bmeyJz2eyBQ9hCe%2B9v7A3ZINAKTWaofuR%2Fjw%3D%3D"); /*Service Key*/ + urlBuilder.append("&" + URLEncoder.encode("numOfRows","UTF-8") + "=" + URLEncoder.encode("100", "UTF-8")); /*한 페이지 결과 수*/ + urlBuilder.append("&" + URLEncoder.encode("solYear","UTF-8") + "=" + URLEncoder.encode(holidayVO.getSearchYear(), "UTF-8")); /*연*/ + URL url = new URL(urlBuilder.toString()); + HttpURLConnection conn = (HttpURLConnection) url.openConnection(); + conn.setRequestMethod("GET"); + conn.setRequestProperty("Content-type", "application/json"); + System.out.println("Response code: " + conn.getResponseCode()); + BufferedReader rd; + if(conn.getResponseCode() >= 200 && conn.getResponseCode() <= 300) { + rd = new BufferedReader(new InputStreamReader(conn.getInputStream())); + } else { + rd = new BufferedReader(new InputStreamReader(conn.getErrorStream())); + } + StringBuilder sb = new StringBuilder(); + String line; + while ((line = rd.readLine()) != null) { + sb.append(line); + } + rd.close(); + conn.disconnect(); + + /*파싱 후 insert 반복*/ + DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); + DocumentBuilder builder = factory.newDocumentBuilder(); + InputSource is = new InputSource(new StringReader(sb.toString())); + Document doc = builder.parse(is); + + NodeList itemList = doc.getElementsByTagName("item"); + List holidayList = new ArrayList<>(); + + for(int i=0; i returnHolidayAjax(@RequestBody HolidayVO holidayVO, RedirectAttributes redirectAttributes)throws Exception{ + String std = holidayVO.getSdt(); + String etd = holidayVO.getEdt(); + + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMdd"); + LocalDate startDate = LocalDate.parse(std, formatter); + LocalDate endDate = LocalDate.parse(etd, formatter); + + //시작일에 하루 더해서 set 해주기 - 시작일이 공휴일 또는 주말인 경우 대비ㄱ + startDate = startDate.plusDays(1); + std = startDate.format(formatter); + holidayVO.setSdt(std); + + //공휴일 수 + int hldCnt = holidayService.selectHolidayCnt(holidayVO); + + int workCnt = 0; + //주말, 공휴일 뺀 기간 + for (LocalDate date = startDate; !date.isAfter(endDate); date = date.plusDays(1)) { + // 주말이 아닌 경우에만 근무일 수 증가 + if (date.getDayOfWeek().getValue() != 6 && date.getDayOfWeek().getValue() != 7) { + workCnt++; + } + } + workCnt = workCnt - hldCnt; + return new ResponseEntity(workCnt, HttpStatus.OK); + } +} diff --git a/src/main/java/seed/com/gtm/base/GwBaseController.java b/src/main/java/seed/com/gtm/base/GwBaseController.java index 1ccf37e3..952efa81 100644 --- a/src/main/java/seed/com/gtm/base/GwBaseController.java +++ b/src/main/java/seed/com/gtm/base/GwBaseController.java @@ -1364,6 +1364,226 @@ public class GwBaseController { + GwApi testApi = new GwApi(); + + if ("1".equals(v_ret)) { //처리 실패한 경우 + testApi.setResultCode("FAIL"); + testApi.setResultMessage("실패하였습니다"); + + //testApi.setResultCode("SUCCESS"); + //testApi.setResultMessage("성공하였습니다"); + }else { + testApi.setResultCode("SUCCESS"); + testApi.setResultMessage("성공하였습니다"); + } + + + return testApi; + + } + + //doc id 변경 + @RequestMapping(value = {"/web/ChangeHistoryDocId.do"}) + public GwApi ChangeHistoryDocId(HttpServletRequest request, + HttpServletResponse response, + HttpSession session, + //Map map, + @RequestParam Map map + //@RequestBody Map map + ){ + + String v_ret = "0"; + + try { + + System.out.println("request.getParameter(\"processId\")="+map.get("processId")); + System.out.println("request.getParameter(\"approKey\")="+map.get("approKey")); + System.out.println("request.getParameter(\"docId\")="+map.get("docId")); + + //10-임시저장 + //20-상신 + /* + * request.getParameter("processId")=5402000000 + request.getParameter("approKey")=H20241129030909 + request.getParameter("docId")=331 + request.getParameter("docSts")=20 + request.getParameter("userId")=test04 + * */ + System.out.println("request.getParameter(\"docSts\")="+map.get("docSts")); + System.out.println("request.getParameter(\"userId\")="+map.get("userId")); + + System.out.println("request.getParameter(\"approKey\")="+request.getParameter("approKey")); + System.out.println("request.getParameter(\"docId\")="+request.getParameter("docId")); + System.out.println("request.getParameter(\"docSts\")="+request.getParameter("docSts")); + + + Enumeration params1 = request.getParameterNames(); + System.out.println("----------------------------"); + while (params1.hasMoreElements()){ + String name = (String)params1.nextElement(); + System.out.println(name + " : " +request.getParameter(name)); + } + System.out.println("----------------------------"); + + Enumeration params2 = session.getAttributeNames(); + System.out.println("----------------------------"); + while (params2.hasMoreElements()){ + String name = (String)params2.nextElement(); + System.out.println(name + " : " +session.getAttribute(name)); + } + System.out.println("----------------------------"); + + System.out.println("request.getParameter(\"processId\")="+request.getParameter("processId")); + System.out.println("request.getParameter(\"approKey\")="+request.getParameter("approKey")); + System.out.println("request.getParameter(\"docId\")="+request.getParameter("docId")); + System.out.println("request.getParameter(\"docSts\")="+request.getParameter("docSts")); + System.out.println("request.getParameter(\"userId\")="+request.getParameter("userId")); + System.out.println("request.getParameter(\"formId\")="+request.getParameter("formId")); + System.out.println("request.getParameter(\"docTitle\")="+request.getParameter("docTitle")); + + + EgovMap params; + + try { + //request.setCharacterEncoding("UTF-8"); + //ModelAndView mav = new ModelAndView(); + //ModelAndView mavjson = new ModelAndView(new JSONView()); + + + + }catch(Exception ex) { + ex.printStackTrace(); + } + + //String tempDir = ApplicationProperty.get("url.referrer"); + params = JSPUtil.makeRequestParams(request, session, true); + + String p_approKey = request.getParameter("approKey"); //하도2024-0540_H20241129030909_undefined_seqNo + String p_docId = request.getParameter("docId"); // 12341234 + String p_docSts = request.getParameter("docSts"); // $("#callbackFrm #docStsTmp").val(p_type); + String p_caseNo = request.getParameter("caseNo"); // $("#callbackFrm #caseNoTmp").val('manu'); + String p_seqNo = ""; + + List p_caseNoList = null; + String[] s_arr = p_approKey.split("_"); + + p_caseNo = s_arr[0]; + p_seqNo = s_arr[3]; + + params.put("seqNo", p_seqNo); + params.put("caseNo", p_caseNo); + params.put("docId", p_docId); + + params.put("sql", "nanumSanctnhistoryCallbackIns"); + params.put("sql", "nanumSanctnhistoryCallbackIns20241209"); + params.put("sql", "nanumRetrunHisUpdateDocId"); + bservice.insert(params); + + /* + + //수동 또는 자동의 전달 체크 + if ("manu".equals(p_caseNo)) { //수동 처리인 경우 manu가 전달 + + + String[] s_Arr = params.get("approKey").toString().split("_"); + System.out.println("p_approKey"); + System.out.println(p_approKey); + System.out.println(params.get("approKey").toString()); + System.out.println(s_Arr[0]); + System.out.println(s_Arr[1]); + params.put("caseNo", s_Arr[0]); //사건 정보 + params.put("docID", s_Arr[1]); //문서 정보 + + + + System.out.println(p_approKey); + System.out.println(p_docId); + System.out.println(p_docSts); + + + }else { //자동으로 g/w에서 전달된 데이터 값 처리 + p_approKey = map.get("approKey").toString(); + params.put("docID", p_approKey); //문서 정보 + + p_docSts = map.get("docSts").toString(); + + if ("10".equals(p_docSts)) { //임시저장(상신취소) + p_docSts = "T"; + }else if ("20".equals(p_docSts)) { //상신 + p_docSts = "P"; + }else if ("90".equals(p_docSts)) { //승인(종결/결재) - 90 + p_docSts = "A"; + }else if ("100".equals(p_docSts)) { //반려 + p_docSts = "R"; + }else if ("999".equals(p_docSts)) { //삭제 + p_docSts = "D"; + } + + //10-임시저장 + //20-상신 + + + + //step1.docSts를 D/P/A 등으로 변경 + //step2.approKey로 사건 리스트를 가져온다. + //params.put("docId", "0400000000"); //사건진행상태 + params.put("sql", "nanumSanctnhistorySelAll"); //사건 정보 + params.put("dataList", JSPUtil.fixNull(bservice.list(params))); + + p_caseNoList = (List)params.get("dataList"); + + } + + + if ("D".equals(p_docSts)) { //수동 전달의 삭제코드 확인 필요-반려 + //수동 삭제는 여기서 해당 데이터를 삭제한다. + params.put("status", "deleted"); //결과값 + + }else if ("P".equals(p_docSts)) { //상신 + params.put("status", "accepted"); //결과값 + + }else if ("A".equals(p_docSts)) { //승인-종결 + params.put("status", "processed"); //결과값 + + }else if ("T".equals(p_docSts)) { //임시저장-상신취소 + params.put("status", "updated"); //결과값 + + }else if ("R".equals(p_docSts)) { //반려 - 데이터 삭제처리한다. + params.put("status", "rejected"); //결과값 + + }else { + params.put("status", p_docSts); //결과값 + } + + if ("manu".equals(p_caseNo)) { //수동 처리인 경우 manu가 전달 + v_ret = this.nanumOld(params, p_caseNo); + }else {//여러 사건 처리 가능 + //step2.사건리스트를 가져완서 for를 돌린다. + for (Object key : p_caseNoList) { + EgovMap n_em = (EgovMap)key; + + params.put( + "caseNo", + n_em.get("caseNo").toString() + ); //사건진행상태 + + v_ret = this.nanumOld(params, p_caseNo); + + } + //params.put("caseNo", s_Arr[0]); //사건 정보 + //v_ret = this.nanumOld(params, p_caseNo); + } + */ + + + + }catch(Exception ex) { + ex.printStackTrace(); + v_ret = "1"; + } + + + GwApi testApi = new GwApi(); if ("1".equals(v_ret)) { //처리 실패한 경우 diff --git a/src/main/resources/egovframework/sqlmap/config/mappers/nanum/nanum_sql.xml b/src/main/resources/egovframework/sqlmap/config/mappers/nanum/nanum_sql.xml index 2ff10949..2ef8667c 100644 --- a/src/main/resources/egovframework/sqlmap/config/mappers/nanum/nanum_sql.xml +++ b/src/main/resources/egovframework/sqlmap/config/mappers/nanum/nanum_sql.xml @@ -1274,6 +1274,14 @@ AND DOC_ID = #{docId} + + + UPDATE C_SANCTNHISTORY + SET DOC_ID = #{docId} + WHERE CASE_NO = #{caseNo} + AND SEQ_NO = #{seqNo} + + + + + +
+
+
+

GW연동 수동관리

+
    +
  • +
  • +

    GW연동 수동관리

    +
  • +
  • GW연동 수동관리
  • +
+
+ + + +
+ +
+

+
+ 사건번호 + + +
+
+ + +
+ + +
+ docId + + + + + + + + + + + +
+ +
+ + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
날짜공휴일 이름등록일삭제
+ +
+
+ + + +
+ +
+ + +
+
+
+ + + + + + +
+ + + + + + + + +
+ + diff --git a/src/main/webapp/WEB-INF/jsp/seed/_extra/gtm/statsmng/statsListOnlydaytimeBusiness.jsp b/src/main/webapp/WEB-INF/jsp/seed/_extra/gtm/statsmng/statsListOnlydaytimeBusiness.jsp index 2899694d..6181673b 100644 --- a/src/main/webapp/WEB-INF/jsp/seed/_extra/gtm/statsmng/statsListOnlydaytimeBusiness.jsp +++ b/src/main/webapp/WEB-INF/jsp/seed/_extra/gtm/statsmng/statsListOnlydaytimeBusiness.jsp @@ -129,7 +129,7 @@ function clipCall(){
  • - ~ + ~