Merge pull request 'dev' (#296) from dev into prd-deploy

Reviewed-on: #296
This commit is contained in:
ysCha 2026-01-06 17:33:31 +09:00
commit c8000ad513
3 changed files with 55 additions and 7 deletions

View File

@ -280,12 +280,60 @@ public class JobLauncherController {
return "Job already running";
}
JobParameters jobParameters =
new JobParametersBuilder().addDate("time", new Date()).toJobParameters();
// JobParameters jobParameters =
// new JobParametersBuilder().addDate("time", new Date()).toJobParameters();
//
// jobLauncher.run(job, jobParameters);
//
// return jobName+ " executed successfully";
jobLauncher.run(job, jobParameters);
// 재시도 로직 추가
int maxRetries = 3;
int retryCount = 0;
long initialDelay = 60000; // 1분
return jobName+ " executed successfully";
while (retryCount < maxRetries) {
try {
JobParameters jobParameters = new JobParametersBuilder()
.addString("jobName", jobName)
.addDate("time", new Date())
.addLong("run.id", System.currentTimeMillis())
.toJobParameters();
log.info("Job {} 실행 시도 (재시도 {}/{})", jobName, retryCount + 1, maxRetries);
JobExecution jobExecution = jobLauncher.run(job, jobParameters);
log.info("Job {} 완료 상태: {}", jobName, jobExecution.getExitStatus().getExitCode());
return jobName + " executed successfully";
} catch (Exception e) {
retryCount++;
// 데드락 오류인지 확인
boolean isDeadlock = e.getCause() != null &&
e.getCause().getMessage() != null &&
e.getCause().getMessage().toLowerCase().contains("deadlock");
if (isDeadlock && retryCount < maxRetries) {
long delay = initialDelay * retryCount; // 1분, 2분, 3분 증가
log.warn("Job {} 실행 중 데드락 발생. {}/{} 재시도 ({}ms 후 재시도)...",
jobName, retryCount, maxRetries, delay, e);
try {
Thread.sleep(delay);
} catch (InterruptedException ie) {
Thread.currentThread().interrupt();
log.error("Job {} 재시도 중 인터럽트 발생", jobName, ie);
return "Job " + jobName + " interrupted during retry";
}
} else {
log.error("Job {} 실행 실패 (재시도 {}/{})", jobName, retryCount, maxRetries, e);
return "Error executing job " + jobName + ": " + e.getMessage();
}
}
}
return "Job " + jobName + " failed after " + maxRetries + " retries";
}
/**

View File

@ -1830,7 +1830,7 @@ public class EstimateService {
// 추후 개발 (가대중량표)
if (estimateRequest.getSchDrawingFlg().indexOf("4") < 0) {
safeRemoveSheet(workbook, "重量算");
safeRemoveSheet(workbook, "重量算出シート");
safeRemoveSheet(workbook, "特異事項");
}
@ -1840,7 +1840,7 @@ public class EstimateService {
safeRemoveSheet(workbook, "発電シミュレーション");
safeRemoveSheet(workbook, "割付図・系統図");
safeRemoveSheet(workbook, "架台図");
safeRemoveSheet(workbook, "重量算");
safeRemoveSheet(workbook, "重量算出シート");
}else{
safeRemoveSheet(workbook,"見積書.");
safeRemoveSheet(workbook, "特異事項");

View File

@ -404,7 +404,7 @@
ON PE.ITEM_ID = I.ITEM_ID
WHERE P.OBJECT_NO = #{objectNo}
AND P.PLAN_NO = #{planNo}
AND I.POWER_COM_FLG = '1' /* PCS 아이템만 */
AND I.POWER_COM_FLG = '1' /* PCS 아이템만 */
) T
</select>