fix: 검수등록대기 목록에서 등록 누를 때, 압밀시험 유효성 (중복) 검사 로직 추가
parent
edd6523d9d
commit
69a4adfb88
|
|
@ -269,6 +269,82 @@ public class WebConfirm
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* TEMP_CONSOLIDATION 테이블의 압밀시험 데이터 중복을 검사합니다.
|
||||||
|
* (SAMPLE_CODE, CONSOL_P, CONSOL_E 조합 중복 검사)
|
||||||
|
*
|
||||||
|
* @param request HttpServletRequest
|
||||||
|
* @param PROJECT_CODE 검사할 프로젝트 코드
|
||||||
|
* @return 유효성 검사 결과 (success: true/false, errorMessage: "...")
|
||||||
|
*/
|
||||||
|
private Map<String, Object> validationCheckTempConsolidation(HttpServletRequest request, final String PROJECT_CODE) {
|
||||||
|
Map<String, Object> result = new HashMap<>();
|
||||||
|
DatabaseQuery validationQuery = null;
|
||||||
|
ResultSet rs = null;
|
||||||
|
|
||||||
|
// SAMPLE_CODE, CONSOL_P, CONSOL_E 조합으로 중복 건 조회 SQL
|
||||||
|
final String validationSql = "SELECT " +
|
||||||
|
" SAMPLE_CODE, " +
|
||||||
|
" CONSOL_P, " +
|
||||||
|
" CONSOL_E, " +
|
||||||
|
" COUNT(1) AS \"COUNT\" " +
|
||||||
|
"FROM " +
|
||||||
|
" TEMP_CONSOLIDATION " +
|
||||||
|
"WHERE " +
|
||||||
|
" PROJECT_CODE = [PROJECT_CODE] " +
|
||||||
|
"GROUP BY " +
|
||||||
|
" SAMPLE_CODE, " +
|
||||||
|
" CONSOL_P, " +
|
||||||
|
" CONSOL_E " +
|
||||||
|
"HAVING " +
|
||||||
|
" 1 < COUNT(1)";
|
||||||
|
|
||||||
|
try {
|
||||||
|
validationQuery = new DatabaseQuery(validationSql);
|
||||||
|
validationQuery.setParam("PROJECT_CODE", PROJECT_CODE);
|
||||||
|
|
||||||
|
rs = validationQuery.execute(connection);
|
||||||
|
|
||||||
|
StringBuilder errorMessages = new StringBuilder();
|
||||||
|
|
||||||
|
while (rs.next()) {
|
||||||
|
String sampleCode = rs.getString("SAMPLE_CODE");
|
||||||
|
double consolP = rs.getDouble("CONSOL_P");
|
||||||
|
double consolE = rs.getDouble("CONSOL_E");
|
||||||
|
int count = rs.getInt("COUNT");
|
||||||
|
|
||||||
|
errorMessages.append("- 시료코드[" + sampleCode + "]의 하중(" + consolP + ") 및 간극비(" + consolE + ") 데이터가 " + count + "개 중복됨.\\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (errorMessages.length() > 0) {
|
||||||
|
result.put("success", false);
|
||||||
|
result.put("errorMessage", errorMessages.toString().trim());
|
||||||
|
} else {
|
||||||
|
result.put("success", true);
|
||||||
|
result.put("errorMessage", "");
|
||||||
|
}
|
||||||
|
|
||||||
|
} catch (SQLException e) {
|
||||||
|
logger.error("Consolidation validation check error", e);
|
||||||
|
result.put("success", false);
|
||||||
|
result.put("errorMessage", "압밀시험 유효성 검사 중 데이터베이스 오류가 발생했습니다: " + e.getMessage());
|
||||||
|
} finally {
|
||||||
|
try {
|
||||||
|
if (rs != null) rs.close();
|
||||||
|
if (validationQuery != null) validationQuery.close();
|
||||||
|
} catch (SQLException sqle) {
|
||||||
|
logger.error("Error closing validation resources", sqle);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 날짜 문자열이 8자리 숫자로 구성되어 있는지 확인합니다.
|
* 날짜 문자열이 8자리 숫자로 구성되어 있는지 확인합니다.
|
||||||
* @param dateStr 날짜 문자열
|
* @param dateStr 날짜 문자열
|
||||||
|
|
@ -314,6 +390,22 @@ public class WebConfirm
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// 유효성 체크 ▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼
|
||||||
|
// ==========================================================================
|
||||||
|
// 압밀시험 정보(TEMP_CONSOLIDATION) 중복 체크 수행
|
||||||
|
// ==========================================================================
|
||||||
|
Map<String, Object> consolValidation = validationCheckTempConsolidation(request, PROJECT_CODE);
|
||||||
|
|
||||||
|
if (!(Boolean) consolValidation.get("success")) {
|
||||||
|
String errorMessage = (String) consolValidation.get("errorMessage");
|
||||||
|
logger.warn("Consolidation validation failed for PROJECT_CODE [{}]: {}", PROJECT_CODE, errorMessage);
|
||||||
|
|
||||||
|
// 예외를 발생시켜 전체 로직 롤백 및 사용자 알림
|
||||||
|
throw new SQLException("등록에 실패하였습니다.\\n\\n압밀시험 정보(TEMP_CONSOLIDATION) 중 시료코드, 하중, 간극비 조합이 중복되었습니다. 데이터를 확인해 주세요:\\n\\n" + errorMessage);
|
||||||
|
}
|
||||||
|
// ==========================================================================
|
||||||
|
// 유효성 체크 ▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//(connection = connectionPool.getConnection()).setAutoCommit(false);
|
//(connection = connectionPool.getConnection()).setAutoCommit(false);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue