파일저장도 확인완료

This commit is contained in:
leeheejin
2025-12-16 17:59:55 +09:00
parent a8fbd65757
commit fa7797fdd9
4 changed files with 828 additions and 227 deletions

View File

@@ -1045,6 +1045,8 @@ public class QualityService extends BaseService{
/**
* 반제품검사 저장 (새로운 팝업 형식)
* - 기존 INSPECTION_GROUP_ID가 있으면 수정 모드 (기존 OBJID 유지하면서 UPSERT)
* - 없으면 신규 등록 모드
*/
public Map saveSemiProductInspection(HttpServletRequest request, Map paramMap){
Map resultMap = new HashMap();
@@ -1058,11 +1060,21 @@ public class QualityService extends BaseService{
// JSON 데이터 파싱
String leftDataStr = CommonUtils.checkNull(paramMap.get("leftData"));
String rightDataStr = CommonUtils.checkNull(paramMap.get("rightData"));
String existingGroupId = CommonUtils.checkNull(paramMap.get("INSPECTION_GROUP_ID"));
org.json.simple.parser.JSONParser parser = new org.json.simple.parser.JSONParser();
// 검사 그룹 ID 생성 (이번 저장 건을 묶는 용도)
String inspectionGroupId = CommonUtils.createObjId();
// 검사 그룹 ID 결정 (기존 있으면 유지, 없으면 새로 생성)
String inspectionGroupId = "";
java.util.Set existingObjIds = new java.util.HashSet(); // 저장할 OBJID 목록 (삭제 대상 판별용)
if(!existingGroupId.equals("")){
// 수정 모드: 기존 그룹 ID 유지
inspectionGroupId = existingGroupId;
} else {
// 신규 등록 모드
inspectionGroupId = CommonUtils.createObjId();
}
// 양품 정보 (leftData) 저장
if(leftDataStr != null && !leftDataStr.equals("") && !leftDataStr.equals("[]")){
@@ -1070,8 +1082,16 @@ 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가 아니면 유지, 아니면 새로 생성
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 = isNewRow ? CommonUtils.createObjId() : existingObjId;
existingObjIds.add(objId);
Map sqlParamMap = new HashMap();
sqlParamMap.put("OBJID", CommonUtils.createObjId());
sqlParamMap.put("OBJID", objId);
sqlParamMap.put("MODEL_NAME", CommonUtils.checkNull(item.get("MODEL_NAME")));
sqlParamMap.put("PRODUCT_TYPE", CommonUtils.checkNull(item.get("PRODUCT_TYPE")));
sqlParamMap.put("WORK_ORDER_NO", CommonUtils.checkNull(item.get("WORK_ORDER_NO")));
@@ -1094,36 +1114,62 @@ public class QualityService extends BaseService{
sqlParamMap.put("DISPOSITION_TYPE", "");
sqlParamMap.put("REMARK", "");
sqlSession.insert("quality.insertSemiProductInspectionData", sqlParamMap);
if(isNewRow){
sqlSession.insert("quality.insertSemiProductInspectionData", sqlParamMap);
} else {
// 기존 데이터 업데이트
sqlSession.update("quality.updateSemiProductInspectionData", sqlParamMap);
}
}
}
// 양품 데이터에서 공통 정보 추출 (불량 데이터 연결용)
String commonWorkOrderNo = "";
String commonModelName = "";
String commonProductType = "";
String commonPartNo = "";
String commonPartName = "";
// 양품 데이터를 ROW_ID 기준 Map으로 변환 (불량 데이터 매칭용)
Map leftDataMap = new HashMap(); // ROW_ID -> leftData 아이템
if(leftDataStr != null && !leftDataStr.equals("") && !leftDataStr.equals("[]")){
org.json.simple.JSONArray leftArrForWo = (org.json.simple.JSONArray) parser.parse(leftDataStr);
if(leftArrForWo.size() > 0){
org.json.simple.JSONObject firstItem = (org.json.simple.JSONObject) leftArrForWo.get(0);
commonWorkOrderNo = CommonUtils.checkNull(firstItem.get("WORK_ORDER_NO"));
commonModelName = CommonUtils.checkNull(firstItem.get("MODEL_NAME"));
commonProductType = CommonUtils.checkNull(firstItem.get("PRODUCT_TYPE"));
commonPartNo = CommonUtils.checkNull(firstItem.get("PART_NO"));
commonPartName = CommonUtils.checkNull(firstItem.get("PART_NAME"));
org.json.simple.JSONArray leftArrForMap = (org.json.simple.JSONArray) parser.parse(leftDataStr);
for(int i = 0; i < leftArrForMap.size(); i++){
org.json.simple.JSONObject leftItem = (org.json.simple.JSONObject) leftArrForMap.get(i);
String rowId = CommonUtils.checkNull(leftItem.get("ROW_ID"));
if(!rowId.equals("")){
leftDataMap.put(rowId, leftItem);
}
}
}
// 불량 정보 (rightData) 저장
// 불량 정보 (rightData) 저장 - PARENT_ROW_ID를 기반으로 해당 양품 정보와 매칭
if(rightDataStr != null && !rightDataStr.equals("") && !rightDataStr.equals("[]")){
org.json.simple.JSONArray rightArr = (org.json.simple.JSONArray) parser.parse(rightDataStr);
for(int i = 0; i < rightArr.size(); i++){
org.json.simple.JSONObject item = (org.json.simple.JSONObject) rightArr.get(i);
// PARENT_ROW_ID로 해당 양품 정보 찾기
String parentRowId = CommonUtils.checkNull(item.get("PARENT_ROW_ID"));
org.json.simple.JSONObject parentItem = (org.json.simple.JSONObject) leftDataMap.get(parentRowId);
// 부모 양품 정보에서 값 추출
String workOrderNo = "";
String modelName = "";
String productType = "";
String partNo = "";
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"));
}
// 기존 OBJID가 있고 임시 ID가 아니면 유지, 아니면 새로 생성
String existingObjId = CommonUtils.checkNull(item.get("OBJID"));
boolean isNewRow = existingObjId.equals("") || existingObjId.startsWith("DEFECT_") || existingObjId.startsWith("NEW_");
String objId = isNewRow ? CommonUtils.createObjId() : existingObjId;
existingObjIds.add(objId);
Map sqlParamMap = new HashMap();
sqlParamMap.put("OBJID", CommonUtils.createObjId());
sqlParamMap.put("OBJID", objId);
sqlParamMap.put("DEFECT_QTY", CommonUtils.checkNull(item.get("DEFECT_QTY"), "0"));
sqlParamMap.put("DEFECT_TYPE", CommonUtils.checkNull(item.get("DEFECT_TYPE")));
sqlParamMap.put("DEFECT_CAUSE", CommonUtils.checkNull(item.get("DEFECT_CAUSE")));
@@ -1137,19 +1183,32 @@ public class QualityService extends BaseService{
sqlParamMap.put("DATA_TYPE", "DEFECT");
sqlParamMap.put("INSPECTION_GROUP_ID", inspectionGroupId);
// 양품 데이터와 연결 (공통 정보 복사)
sqlParamMap.put("WORK_ORDER_NO", commonWorkOrderNo);
sqlParamMap.put("MODEL_NAME", commonModelName);
sqlParamMap.put("PRODUCT_TYPE", commonProductType);
sqlParamMap.put("PART_NO", commonPartNo);
sqlParamMap.put("PART_NAME", commonPartName);
// 해당 양품 데이터와 연결 (부모 정보 복사)
sqlParamMap.put("WORK_ORDER_NO", workOrderNo);
sqlParamMap.put("MODEL_NAME", modelName);
sqlParamMap.put("PRODUCT_TYPE", productType);
sqlParamMap.put("PART_NO", partNo);
sqlParamMap.put("PART_NAME", partName);
sqlParamMap.put("RECEIPT_QTY", "0");
sqlParamMap.put("GOOD_QTY", "0");
sqlSession.insert("quality.insertSemiProductInspectionData", sqlParamMap);
if(isNewRow){
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);
}
sqlSession.commit();
resultMap.put("result", true);
resultMap.put("msg", "저장되었습니다.");