Merge remote-tracking branch 'origin/master'
eapim-admin CI / build (push) Has been cancelled

This commit is contained in:
Rinjae
2026-08-19 14:31:19 +09:00
5 changed files with 46 additions and 24 deletions
@@ -62,7 +62,19 @@
return '<span title="' + escapeAttr(rowObject.sentDateFull || '') + '">' + escapeHtmlJs(rowObject.sentDateShort || '') + '</span>'; return '<span title="' + escapeAttr(rowObject.sentDateFull || '') + '">' + escapeHtmlJs(rowObject.sentDateShort || '') + '</span>';
} }
function toDashDate(yyyymmdd) {
return yyyymmdd.substring(0, 4) + "-" + yyyymmdd.substring(4, 6) + "-" + yyyymmdd.substring(6, 8);
}
function init() { function init() {
$("#startDatepicker").datepicker().inputmask("yyyy-mm-dd",{'autoUnmask':true});
$("#endDatepicker").datepicker().inputmask("yyyy-mm-dd",{'autoUnmask':true});
var today = getToday();
$("input[name=searchFromDate]").val(toDashDate(today.substring(0,6)+"01"));
$("input[name=searchToDate]").val(toDashDate(today));
$.ajax({ $.ajax({
type: "POST", url: url, dataType: "json", type: "POST", url: url, dataType: "json",
data: {cmd: 'LIST_INIT_COMBO'}, data: {cmd: 'LIST_INIT_COMBO'},
@@ -145,6 +157,20 @@
init(); init();
$("#btn_search").click(function () { $("#btn_search").click(function () {
var start = $("input[name=searchFromDate]").val().replace(/-/gi, "");
var end = $("input[name=searchToDate]").val().replace(/-/gi, "");
if (start && start > getToday()) {
alert("시작일이 오늘 이후입니다. 시작일을 확인해주세요.");
$("input[name=searchFromDate]").focus();
return false;
}
if (start && end && start > end) {
alert("조회기간 종료일은 시작일보다 커야합니다.");
$("input[name=searchToDate]").focus();
return false;
}
var postData = getSearchForJqgrid("cmd", "LIST"); var postData = getSearchForJqgrid("cmd", "LIST");
$("#grid").setGridParam({url: url, postData: postData, page: 1}).trigger("reloadGrid"); $("#grid").setGridParam({url: url, postData: postData, page: 1}).trigger("reloadGrid");
}); });
@@ -198,7 +224,9 @@
</td> </td>
<th>요청기간</th> <th>요청기간</th>
<td colspan="3"> <td colspan="3">
<input type="date" name="searchFromDate"> ~ <input type="date" name="searchToDate"> <input type="text" name="searchFromDate" id="startDatepicker" readonly="readonly" value="" size="10" style="width:100px; border:1px solid #ebebec;">
~
<input type="text" name="searchToDate" value="" id="endDatepicker" size="10" readonly="readonly" style="width:100px; border:1px solid #ebebec;">
</td> </td>
</tr> </tr>
</tbody> </tbody>
@@ -222,9 +222,9 @@
<td><input type="text" name="searchTargetUrl" autocomplete="off" style="width:95%;"></td> <td><input type="text" name="searchTargetUrl" autocomplete="off" style="width:95%;"></td>
<th>발송기간</th> <th>발송기간</th>
<td> <td>
<input type="text" name="searchStartYYYYMMDD" id="startDatepicker" readonly="readonly" value="" size="10" style="width:40%; border:1px solid #ebebec;"> <input type="text" name="searchStartYYYYMMDD" id="startDatepicker" readonly="readonly" value="" size="10" style="width:100px; border:1px solid #ebebec;">
~ ~
<input type="text" name="searchEndYYYYMMDD" value="" id="endDatepicker" size="10" readonly="readonly" style="width:40%; border:1px solid #ebebec;"> <input type="text" name="searchEndYYYYMMDD" value="" id="endDatepicker" size="10" readonly="readonly" style="width:100px; border:1px solid #ebebec;">
<input type="hidden" name="searchStartDate" value=""> <input type="hidden" name="searchStartDate" value="">
<input type="hidden" name="searchEndDate" value=""> <input type="hidden" name="searchEndDate" value="">
</td> </td>
@@ -19,23 +19,7 @@ public class ClusteredSchedulerConfig {
@Autowired @Qualifier("MONITORING") @Autowired @Qualifier("MONITORING")
private DataSourceType monitoringDatasource; private DataSourceType monitoringDatasource;
/*
public class AutowiringSpringBeanJobFactory extends SpringBeanJobFactory {
@Override
protected Object createJobInstance(TriggerFiredBundle bundle) throws Exception {
Object job = super.createJobInstance(bundle);
applicationContext.getAutowireCapableBeanFactory().autowireBean(job);
return job;
}
}
@Bean
public SpringBeanJobFactory springBeanJobFactory() {
return new AutowiringSpringBeanJobFactory();
}
*/
@Bean(name = "clusteredScheduler") @Bean(name = "clusteredScheduler")
public SchedulerFactoryBean clusteredScheduler() { public SchedulerFactoryBean clusteredScheduler() {
@@ -81,11 +65,15 @@ public class ClusteredSchedulerConfig {
factory.setQuartzProperties(quartzProperties); factory.setQuartzProperties(quartzProperties);
factory.setAutoStartup(true); factory.setAutoStartup(true);
factory.setSchedulerName("EMS_ClusteredScheduler"); factory.setSchedulerName("EMS_ClusteredScheduler");
// factory.setJobFactory(springBeanJobFactory());
AutoWiringSpringBeanJobFactory jobFactory =
new AutoWiringSpringBeanJobFactory(applicationContext.getAutowireCapableBeanFactory());
jobFactory.setApplicationContext(applicationContext);
factory.setJobFactory(jobFactory);
factory.setApplicationContextSchedulerContextKey("applicationContext"); factory.setApplicationContextSchedulerContextKey("applicationContext");
factory.setApplicationContext(applicationContext); factory.setApplicationContext(applicationContext);
return factory; return factory;
} }
@@ -58,7 +58,11 @@ public class MessageRequestManService extends BaseService {
ui.setMessageType(e.getMessageType()); ui.setMessageType(e.getMessageType());
// 본문: 패턴 마스킹 + 색상강조 안전 HTML // 본문: 패턴 마스킹 + 색상강조 안전 HTML
ui.setMessageHtml(MessagePatternMaskingUtils.maskAndHighlight(e.getMessage())); if (e.getMessageCode() == MessageCode.API_STATUS_CHANGED) {
ui.setMessageHtml(e.getMessage());
} else {
ui.setMessageHtml(MessagePatternMaskingUtils.maskAndHighlight(e.getMessage()));
}
// 수신자 마스킹 (email/phone 은 @Convert 로 이미 복호화된 평문) // 수신자 마스킹 (email/phone 은 @Convert 로 이미 복호화된 평문)
ui.setUsername(MaskingUtils.maskName(e.getUsername())); ui.setUsername(MaskingUtils.maskName(e.getUsername()));
@@ -3,6 +3,7 @@ package com.eactive.eai.rms.onl.common.service;
import com.eactive.eai.rms.onl.common.service.ums.UmsDispatchService; import com.eactive.eai.rms.onl.common.service.ums.UmsDispatchService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.quartz.DisallowConcurrentExecution;
import org.quartz.Job; import org.quartz.Job;
import org.quartz.JobExecutionContext; import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException; import org.quartz.JobExecutionException;
@@ -21,6 +22,7 @@ import java.util.stream.Collectors;
*/ */
// Cron Expression: */5 * * * * ? // Cron Expression: */5 * * * * ?
@Slf4j @Slf4j
@DisallowConcurrentExecution
public class UmsDispatchJob implements Job { public class UmsDispatchJob implements Job {
private final UmsDispatchService umsDispatchService; private final UmsDispatchService umsDispatchService;