파일저장도 확인완료
This commit is contained in:
@@ -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", "저장되었습니다.");
|
||||
|
||||
Reference in New Issue
Block a user