diff --git a/WebContent/jsp/onl/admin/rule/layoutManDetail.jsp b/WebContent/jsp/onl/admin/rule/layoutManDetail.jsp index e920ea0..4064484 100644 --- a/WebContent/jsp/onl/admin/rule/layoutManDetail.jsp +++ b/WebContent/jsp/onl/admin/rule/layoutManDetail.jsp @@ -76,13 +76,13 @@ columns = [ // for columnData prop { title: '<%= localeMessage.getString("layoutMan.itemDesc") %>', name: 'loutItemDesc', type: 'text', width:280, resize:true, minWidth:120 }, { title: '<%= localeMessage.getString("layoutMan.itmeEn") %>', name: 'loutItemName', type: 'text', width:280, resize:true, minWidth:120 }, - { title: '<%=localeMessage.getString("standardLayout.itemLevel")%>', name: 'loutItemDepth', type: 'text', width:50 }, + { title: '<%=localeMessage.getString("standardLayout.itemLevel")%>', name: 'loutItemDepth', type: 'numeric', width:50 }, { title: '<%= localeMessage.getString("standardLayout.itemType") %>', name: 'loutItemType', type: 'autocomplete', source: itemTypes, width:70 }, { title: '<%= localeMessage.getString("standardLayout.arraySize") %>', name: 'loutItemOccCnt', type: 'text', width:90 }, { title: '<%= localeMessage.getString("standardLayout.refField") %>', name: 'loutItemOccRef', type: 'text', width:90 }, { title: '<%=localeMessage.getString("layoutMan.dataType")%>', name: 'loutItemDataType', type: 'autocomplete', source: basicDataTypes, width:160 }, { title: '<%=localeMessage.getString("layoutMan.dataLen")%>', name: 'loutItemLength', type: 'numeric', width: 70, align: 'center' }, - { title: '<%=localeMessage.getString("layoutMan.decpLen")%>', name: 'loutItemDecimal', type: 'text', width: 70 }, + { title: '<%=localeMessage.getString("layoutMan.decpLen")%>', name: 'loutItemDecimal', type: 'numeric', width: 70 }, { title: '<%=localeMessage.getString("layoutMan.defaultVal")%>', name: 'loutItemDefault', type: 'text', width: 70 }, { title: '<%=localeMessage.getString("layoutMan.mask")%>', name: 'loutItemMaskYn', type: 'checkbox', width: 70 }, { title: '<%=localeMessage.getString("layoutMan.moffset")%>', name: 'loutItemMaskOffset', type: 'text', width: 50 }, @@ -182,6 +182,41 @@ $('#dataTotalLen').text(totalLen); } + function focusGridCell(colIndex, rowIndex) { + var cellName = jexcel.getColumnNameFromId([colIndex, rowIndex]); + var cell = grid.getCell(cellName); + grid.updateSelection(cell); + cell.scrollIntoView({block: 'center', inline: 'center'}); + grid.openEditor(cell, false); + } + + var INTEGER_REGEXP = /^(0|[1-9][0-9]*)$/; + + function validateNumberColumns() { + var data = grid.getData(); + var gridColumns = grid.options.columns; + + for (var col = 0; col < gridColumns.length; col++) { + if (gridColumns[col].type !== 'numeric') { + continue; + } + + for (var row = 0; row < data.length; row++) { + var value = data[row][col]; + if (value == null) { + continue; + } + value = $.trim(String(value)); + if (value !== '' && !INTEGER_REGEXP.test(value)) { + alert("숫자만 입력할 수 있습니다."); + focusGridCell(col, row); + return false; + } + } + } + return true; + } + function detail(key) { if (!isDetail) { return @@ -321,6 +356,10 @@ }); $("#btn_modify").click(function(){ + if (!validateNumberColumns()) { + return; + } + var postData = $('#ajaxForm').serializeArray(); if (isDetail){ postData.push({ name: "cmd" , value:"UPDATE"}); diff --git a/src/main/java/com/eactive/eai/rms/data/entity/onl/apim/messagerequest/MessageRequestService.java b/src/main/java/com/eactive/eai/rms/data/entity/onl/apim/messagerequest/MessageRequestService.java index f7a5d76..686bb0b 100644 --- a/src/main/java/com/eactive/eai/rms/data/entity/onl/apim/messagerequest/MessageRequestService.java +++ b/src/main/java/com/eactive/eai/rms/data/entity/onl/apim/messagerequest/MessageRequestService.java @@ -64,6 +64,17 @@ public class MessageRequestService predicate.and(q.requestDate.loe(date.atTime(23, 59, 59))); return repository.count(predicate); } + + /** 특정 일자에 EMAIL 로 발송 요청된 건수 (UMS 일련번호 채번용). */ + public long countEmailRequestsOnDate(LocalDate date) { + QMessageRequest q = QMessageRequest.messageRequest; + BooleanBuilder predicate = new BooleanBuilder(); + predicate.and(q.messageType.in("EMAIL")); + predicate.and(q.requestDate.goe(date.atStartOfDay())); + predicate.and(q.requestDate.loe(date.atTime(23, 59, 59))); + return repository.count(predicate); + } + /** PENDING 상태인 건만 FAILED 로 전환한다. */ public void updateStatusToFailedIfPending(String id) { diff --git a/src/main/java/com/eactive/eai/rms/ext/djb/ums/service/UmsService.java b/src/main/java/com/eactive/eai/rms/ext/djb/ums/service/UmsService.java index 963a45c..322990f 100644 --- a/src/main/java/com/eactive/eai/rms/ext/djb/ums/service/UmsService.java +++ b/src/main/java/com/eactive/eai/rms/ext/djb/ums/service/UmsService.java @@ -39,10 +39,11 @@ public class UmsService { private static final Gson gson = new Gson(); - private static final String SYS_DVCD = "API"; //시스템코드 - private static final String BZWK_DVCD = "99"; //업무구분코드 - private static final String SUB_BZWK_CD = "9019"; //세부구분코드 - private static final String TEAM_DVCD = "00"; //팀구분코드 TODO: 변경해야함 + private static final String SYS_DVCD = "API"; //시스템코드 + private static final String BZWK_DVCD = "99"; //업무구분코드 + private static final String BZWK_DCLS_DVCD = "9019"; //세부구분코드 + private static final String SUB_BZWK_CD = "999"; //서브업무코드 TODO: 변경할것 + private static final String TEAM_DVCD = "99"; //팀구분코드 TODO: 변경해야함 private final MonitoringPropertyService propertyService; @@ -225,12 +226,12 @@ public class UmsService { } else { dataVO.setAlmtk_snd_prfl_key(propertyService.getPropertyValue("Monitoring", "djb.ums.sms.almtk_snd_prtl_key.public", "")); // 제주은행 플러스친구아이디 } - dataVO.setAlmtk_tmplt_cd(BZWK_DVCD + TEAM_DVCD + SUB_BZWK_CD + "001"); // 템플릿코드 + dataVO.setAlmtk_tmplt_cd(BZWK_DVCD + TEAM_DVCD + BZWK_DCLS_DVCD + "001"); // 템플릿코드 dataVO.setAlmtk_err_ltrs_snd_yn("Y"); // 오류자문자발송여부 dataVO.setAlmtk_btn_trnm_tycd("2"); // 카카오버튼전송방식 1-format string 2-JSON 3-XML } dataVO.setSms_trnm_bzwk_dvcd(BZWK_DVCD); //업무구분코드 - dataVO.setSms_bzwk_dcls_dvcd(SUB_BZWK_CD); //업무세분코드 + dataVO.setSms_bzwk_dcls_dvcd(BZWK_DCLS_DVCD); //업무세분코드 dataVO.setSms_sys_dvcd("83"); //시스템코드 dataVO.setTx_dt(jsonData[0]); //거래일자 dataVO.setTx_tktm(jsonData[1].substring(0,6)); //거래시간 @@ -253,15 +254,15 @@ public class UmsService { // 이메일 데이터 EmailDataVO dataVO = new EmailDataVO(); - dataVO.setUms_evnt_id(""); // TODO: UMS이벤트ID(필수) + dataVO.setUms_evnt_id(propertyService.getPropertyValue("Monitoring", "djb.ums.email.ums_evnt_id", "")); // UMS이벤트ID(필수) dataVO.setSnd_dman_dt(jsonData[0]); - dataVO.setSnd_dman_id(""); + dataVO.setSnd_dman_id(this.getSndDmanId(messageRequest.getMessageType())); dataVO.setSnd_dman_sno("1"); dataVO.setEmail_titl(messageRequest.getSubject()); // 메일제목 - dataVO.setCstno(""); // TODO: 고객번호(필수) - dataVO.setSendr_emaddr(""); // TODO: 발신자 이메일 - dataVO.setSendr_nm(""); // TODO: 발신자 이름 - dataVO.setSndbk_emaddr(""); // TODO: 리턴 이메일 + dataVO.setCstno(propertyService.getPropertyValue("Monitoring", "djb.ums.email.cstno", "")); // 고객번호(필수) + dataVO.setSendr_emaddr(propertyService.getPropertyValue("Monitoring", "djb.ums.email.sendr_emaddr", "")); // 발신자 이메일 + dataVO.setSendr_nm(propertyService.getPropertyValue("Monitoring", "djb.ums.email.sendr_nm", "")); // 발신자 이름 + dataVO.setSndbk_emaddr(propertyService.getPropertyValue("Monitoring", "djb.ums.email.sndbk_emaddr", "")); // 리턴 이메일 dataVO.setRecvr_emaddr(messageRequest.getEmail()); // 수신자 이메일(필수) dataVO.setRecvr_nm(messageRequest.getUsername()); // 수신자명(필수) dataVO.setTmplt_mpng_info(messageRequest.getMessage()); // 탬플릿매핑정보 @@ -270,7 +271,7 @@ public class UmsService { dataVO.setSnd_emp_dprm_cd("132"); // 발신자부서코드(필수) dataVO.setBzwk_cd(BZWK_DVCD); // 업무구분코드 dataVO.setSub_bzwk_cd(SUB_BZWK_CD); // 업무세부코드 - dataVO.setSys_dvcd(SYS_DVCD); + dataVO.setSys_dvcd(SYS_DVCD); // 시스템구분코드 dataVO.setTx_dt(jsonData[0]); // 거래일자 dataVO.setTx_tktm(jsonData[1].substring(0,6)); // 거래시간 @@ -349,19 +350,29 @@ public class UmsService { SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd"); String yyyymmdd = sdf.format(new Date()); - String uuid = SYS_DVCD + BZWK_DVCD + SUB_BZWK_CD + yyyymmdd + "O" ; + String uuid = ""; - if ("SMS".equals(messageType)) { - uuid += "S"; - } else if ("LMS".equals(messageType)) { - uuid += "L"; - } else if ("KAKAO".equals(messageType)) { - uuid += "K"; + if ("EMAIL".equals(messageType)) { + uuid = SYS_DVCD + BZWK_DVCD + SUB_BZWK_CD + yyyymmdd + "O" + "E" ; + + long seq = messageRequestService.countEmailRequestsOnDate(LocalDate.now()) + 1; + uuid += String.format("%013d", seq); + + } else { + uuid = SYS_DVCD + BZWK_DVCD + BZWK_DCLS_DVCD + yyyymmdd + "O" ; + + if ("SMS".equals(messageType)) { + uuid += "S"; + } else if ("LMS".equals(messageType)) { + uuid += "L"; + } else if ("KAKAO".equals(messageType)) { + uuid += "K"; + } + + long seq = messageRequestService.countSmsKakaoRequestsOnDate(LocalDate.now()) + 1; + uuid += String.format("%014d", seq); } - long seq = messageRequestService.countSmsKakaoRequestsOnDate(LocalDate.now()) + 1; - uuid += String.format("%014d", seq); - return uuid; } }