테스트 전 저장

This commit is contained in:
leeheejin
2025-12-17 11:59:03 +09:00
parent b910545f22
commit 3b33b0c133
5 changed files with 713 additions and 98 deletions

View File

@@ -1043,6 +1043,86 @@ public class QualityService extends BaseService{
return resultMap;
}
/**
* 반제품검사 행 잠금 (IS_LOCKED = 'Y')
*/
public Map lockSemiProductInspection(Map paramMap){
Map resultMap = new HashMap();
SqlSession sqlSession = null;
try{
sqlSession = SqlMapConfig.getInstance().getSqlSession(false);
String objIdsJson = CommonUtils.checkNull(paramMap.get("objIds"));
if(!objIdsJson.equals("") && !objIdsJson.equals("[]")){
org.json.simple.parser.JSONParser parser = new org.json.simple.parser.JSONParser();
org.json.simple.JSONArray objIdArr = (org.json.simple.JSONArray) parser.parse(objIdsJson);
for(int i = 0; i < objIdArr.size(); i++){
String objId = CommonUtils.checkNull(objIdArr.get(i));
if(!objId.equals("")){
Map lockParam = new HashMap();
lockParam.put("OBJID", objId);
sqlSession.update("quality.lockSemiProductInspection", lockParam);
}
}
}
sqlSession.commit();
resultMap.put("result", true);
resultMap.put("msg", "잠금 처리되었습니다.");
}catch(Exception e){
resultMap.put("result", false);
resultMap.put("msg", "잠금 처리에 실패했습니다.");
if(sqlSession != null) sqlSession.rollback();
e.printStackTrace();
}finally{
if(sqlSession != null) sqlSession.close();
}
return resultMap;
}
/**
* 반제품검사 삭제 (OBJID 목록으로 삭제)
*/
public Map deleteSemiProductInspection(Map paramMap){
Map resultMap = new HashMap();
SqlSession sqlSession = null;
try{
sqlSession = SqlMapConfig.getInstance().getSqlSession(false);
String objIdsJson = CommonUtils.checkNull(paramMap.get("objIds"));
if(!objIdsJson.equals("") && !objIdsJson.equals("[]")){
org.json.simple.parser.JSONParser parser = new org.json.simple.parser.JSONParser();
org.json.simple.JSONArray objIdArr = (org.json.simple.JSONArray) parser.parse(objIdsJson);
for(int i = 0; i < objIdArr.size(); i++){
String objId = CommonUtils.checkNull(objIdArr.get(i));
if(!objId.equals("")){
Map deleteParam = new HashMap();
deleteParam.put("OBJID", objId);
sqlSession.delete("quality.deleteSemiProductInspectionByObjId", deleteParam);
}
}
}
sqlSession.commit();
resultMap.put("result", true);
resultMap.put("msg", "삭제되었습니다.");
}catch(Exception e){
resultMap.put("result", false);
resultMap.put("msg", "삭제에 실패했습니다.");
if(sqlSession != null) sqlSession.rollback();
e.printStackTrace();
}finally{
if(sqlSession != null) sqlSession.close();
}
return resultMap;
}
/**
* 반제품검사 저장 (새로운 팝업 형식)
* - 기존 INSPECTION_GROUP_ID가 있으면 수정 모드 (기존 OBJID 유지하면서 UPSERT)
@@ -1061,12 +1141,14 @@ public class QualityService extends BaseService{
String leftDataStr = CommonUtils.checkNull(paramMap.get("leftData"));
String rightDataStr = CommonUtils.checkNull(paramMap.get("rightData"));
String existingGroupId = CommonUtils.checkNull(paramMap.get("INSPECTION_GROUP_ID"));
String saveType = CommonUtils.checkNull(paramMap.get("saveType"), "all"); // 저장 타입: left, right, all
org.json.simple.parser.JSONParser parser = new org.json.simple.parser.JSONParser();
// 검사 그룹 ID 결정 (기존 있으면 유지, 없으면 새로 생성)
String inspectionGroupId = "";
java.util.Set existingObjIds = new java.util.HashSet(); // 저장할 OBJID 목록 (삭제 대상 판별용)
java.util.Set existingLeftObjIds = new java.util.HashSet(); // 저장할 좌측 OBJID 목록
java.util.Set existingRightObjIds = new java.util.HashSet(); // 저장할 우측 OBJID 목록
if(!existingGroupId.equals("")){
// 수정 모드: 기존 그룹 ID 유지
@@ -1082,13 +1164,17 @@ public class QualityService extends BaseService{
for(int i = 0; i < leftArr.size(); i++){
org.json.simple.JSONObject item = (org.json.simple.JSONObject) leftArr.get(i);
// 기존 OBJID가 있고 임시 ID가 아니면 유지, 아니면 새로 생성
// OBJID 처리
String existingObjId = CommonUtils.checkNull(item.get("OBJID"));
String rowId = CommonUtils.checkNull(item.get("ROW_ID"));
boolean isNewRow = existingObjId.equals("") || existingObjId.startsWith("NEW_") || existingObjId.startsWith("EXIST_");
String objId = existingObjId;
String objId = isNewRow ? CommonUtils.createObjId() : existingObjId;
existingObjIds.add(objId);
// OBJID가 비어있거나 임시 ID이면 새로 생성
if(objId.equals("") || objId.startsWith("NEW_") || objId.startsWith("EXIST_")){
objId = CommonUtils.createObjId();
}
existingLeftObjIds.add(objId); // 좌측 OBJID 목록에 추가
Map sqlParamMap = new HashMap();
sqlParamMap.put("OBJID", objId);
@@ -1114,11 +1200,11 @@ public class QualityService extends BaseService{
sqlParamMap.put("DISPOSITION_TYPE", "");
sqlParamMap.put("REMARK", "");
if(isNewRow){
// UPSERT: UPDATE 시도 후 실패하면 INSERT
int updateCnt = sqlSession.update("quality.updateSemiProductInspectionData", sqlParamMap);
if(updateCnt == 0){
// UPDATE 실패 시 INSERT (신규 데이터)
sqlSession.insert("quality.insertSemiProductInspectionData", sqlParamMap);
} else {
// 기존 데이터 업데이트
sqlSession.update("quality.updateSemiProductInspectionData", sqlParamMap);
}
}
}
@@ -1154,19 +1240,31 @@ public class QualityService extends BaseService{
String partName = "";
if(parentItem != null){
// 좌측 데이터가 함께 전송된 경우 (전체 저장)
workOrderNo = CommonUtils.checkNull(parentItem.get("WORK_ORDER_NO"));
modelName = CommonUtils.checkNull(parentItem.get("MODEL_NAME"));
productType = CommonUtils.checkNull(parentItem.get("PRODUCT_TYPE"));
partNo = CommonUtils.checkNull(parentItem.get("PART_NO"));
partName = CommonUtils.checkNull(parentItem.get("PART_NAME"));
} else {
// 우측만 저장하는 경우: item에 직접 부모 정보가 포함되어 있음
workOrderNo = CommonUtils.checkNull(item.get("WORK_ORDER_NO"));
modelName = CommonUtils.checkNull(item.get("MODEL_NAME"));
productType = CommonUtils.checkNull(item.get("PRODUCT_TYPE"));
partNo = CommonUtils.checkNull(item.get("PART_NO"));
partName = CommonUtils.checkNull(item.get("PART_NAME"));
}
// 기존 OBJID가 있고 임시 ID가 아니면 유지, 아니면 새로 생성
// OBJID 처리
String existingObjId = CommonUtils.checkNull(item.get("OBJID"));
boolean isNewRow = existingObjId.equals("") || existingObjId.startsWith("DEFECT_") || existingObjId.startsWith("NEW_");
String objId = existingObjId;
String objId = isNewRow ? CommonUtils.createObjId() : existingObjId;
existingObjIds.add(objId);
// OBJID가 비어있으면 새로 생성
if(objId.equals("") || objId.startsWith("DEFECT_") || objId.startsWith("NEW_")){
objId = CommonUtils.createObjId();
}
existingRightObjIds.add(objId); // 우측 OBJID 목록에 추가
Map sqlParamMap = new HashMap();
sqlParamMap.put("OBJID", objId);
@@ -1192,26 +1290,49 @@ public class QualityService extends BaseService{
sqlParamMap.put("RECEIPT_QTY", "0");
sqlParamMap.put("GOOD_QTY", "0");
if(isNewRow){
// UPSERT: UPDATE 시도 후 실패하면 INSERT
int updateCnt = sqlSession.update("quality.updateSemiProductInspectionData", sqlParamMap);
if(updateCnt == 0){
// UPDATE 실패 시 INSERT (신규 데이터)
sqlSession.insert("quality.insertSemiProductInspectionData", sqlParamMap);
} else {
// 기존 데이터 업데이트
sqlSession.update("quality.updateSemiProductInspectionData", sqlParamMap);
}
}
}
// 수정 모드일 때: 전송된 데이터에 없는 기존 데이터는 삭제
// 수정 모드일 때: 자동 삭제 비활성화 (사용자가 직접 삭제 버튼으로만 삭제)
// 데이터 손실 방지를 위해 자동 삭제 로직 제거
// 삭제는 사용자가 그리드에서 행을 선택하고 삭제 버튼을 누를 때만 수행
/*
if(!existingGroupId.equals("")){
Map deleteParam = new HashMap();
deleteParam.put("INSPECTION_GROUP_ID", inspectionGroupId);
deleteParam.put("EXCLUDE_OBJIDS", existingObjIds);
sqlSession.delete("quality.deleteSemiProductInspectionExcludeObjIds", deleteParam);
if("left".equals(saveType)){
if(existingLeftObjIds.size() > 0){
deleteParam.put("EXCLUDE_OBJIDS", existingLeftObjIds);
deleteParam.put("DATA_TYPE", "GOOD");
sqlSession.delete("quality.deleteSemiProductInspectionByType", deleteParam);
}
} else if("right".equals(saveType)){
if(existingRightObjIds.size() > 0){
deleteParam.put("EXCLUDE_OBJIDS", existingRightObjIds);
deleteParam.put("DATA_TYPE", "DEFECT");
sqlSession.delete("quality.deleteSemiProductInspectionByType", deleteParam);
}
} else {
java.util.Set allObjIds = new java.util.HashSet();
allObjIds.addAll(existingLeftObjIds);
allObjIds.addAll(existingRightObjIds);
deleteParam.put("EXCLUDE_OBJIDS", allObjIds);
sqlSession.delete("quality.deleteSemiProductInspectionExcludeObjIds", deleteParam);
}
}
*/
sqlSession.commit();
resultMap.put("result", true);
resultMap.put("msg", "저장되었습니다.");
resultMap.put("inspectionGroupId", inspectionGroupId); // 생성된 그룹 ID 반환
}catch(Exception e){
resultMap.put("result", false);
resultMap.put("msg", "저장 중 오류가 발생했습니다: " + e.getMessage());