diff --git a/WebContent/WEB-INF/view/partMng/openBomReportExcelImportPopUp.jsp b/WebContent/WEB-INF/view/partMng/openBomReportExcelImportPopUp.jsp
index c714553..4f9fa2c 100644
--- a/WebContent/WEB-INF/view/partMng/openBomReportExcelImportPopUp.jsp
+++ b/WebContent/WEB-INF/view/partMng/openBomReportExcelImportPopUp.jsp
@@ -433,30 +433,41 @@ var gridFn = {
url: "/partMng/parsingExcelFile.do"
,datatype : "json"
,postData:{"targetObjId":"${objid}","docType":"PART_EXCEL_IMPORT","OBJID":"${CONTRACT_OBJID}"}
- ,loadComplete : function(data) {
- // CSV 파일에서만 LEVEL 값을 PARENT_PART_NO 컬럼에 표시
- if(data && data.rows) {
- for(var i = 0; i < data.rows.length; i++) {
- var row = data.rows[i];
- // CSV 파일이고 LEVEL 값이 있는 경우
- if(row.IS_CSV === 'Y' && row.LEVEL && row.LEVEL !== '') {
- // LEVEL 값을 PARENT_PART_NO 컬럼에 표시 (화면용)
- grid.jqGrid('setCell', row.id, 'PARENT_PART_NO', row.LEVEL);
- }
+ ,loadComplete : function(data) {
+ gridFn.footerSummary();
}
- }
- gridFn.footerSummary();
- }
,gridComplete : function() {
- //gridFn.opennEdit(); //수정가능
var valid = true;
gridFn.closeEdit();
- //var tempGrid = $('#expenseDetailGrid');
+
+ // 1번 레벨(PARENT_PART_NO가 비어있는 행)의 품번/품명을 헤더에 자동 설정
+ var isFirstLevelSet = false;
+
$.each(grid.getRowData(), function(i, d){
- console.log(d);
+ console.log("Row data:", d);
+
+ // NOTE 검증
if(!fnc_isEmpty(d["NOTE"])){
valid = false;
}
+
+ // PARENT_PART_NO가 비어있으면 1번 레벨 (최상위)
+ var parentPartNo = d["PARENT_PART_NO"] || '';
+ if(!isFirstLevelSet && parentPartNo === '') {
+ var partNo = d["PART_NO"] || '';
+ var partName = d["PART_NAME"] || '';
+
+ console.log("Level 1 found - PART_NO:", partNo, ", PART_NAME:", partName);
+
+ // 새로 CSV 업로드 시 항상 덮어쓰기
+ if(partNo !== '') {
+ $('#bom_part_no').val(partNo);
+ }
+ if(partName !== '') {
+ $('#bom_part_name').val(partName);
+ }
+ isFirstLevelSet = true;
+ }
});
gridFn.opennEdit();
@@ -967,11 +978,11 @@ function fn_save(){
|
-
+
|
|
-
+
|
diff --git a/WebContent/WEB-INF/view/productionplanning/mBomHeaderPopup.jsp b/WebContent/WEB-INF/view/productionplanning/mBomHeaderPopup.jsp
index 066081b..4f70030 100644
--- a/WebContent/WEB-INF/view/productionplanning/mBomHeaderPopup.jsp
+++ b/WebContent/WEB-INF/view/productionplanning/mBomHeaderPopup.jsp
@@ -949,8 +949,7 @@ function compareItemFields(before, after) {
|
|
-
-
+
|
diff --git a/src/com/pms/controller/ProductionPlanningController.java b/src/com/pms/controller/ProductionPlanningController.java
index 4b67033..ae6784d 100644
--- a/src/com/pms/controller/ProductionPlanningController.java
+++ b/src/com/pms/controller/ProductionPlanningController.java
@@ -1223,10 +1223,122 @@ public class ProductionPlanningController extends BaseService {
}
if(mbomDetailList != null && !mbomDetailList.isEmpty()) {
+ // 할당된 E-BOM/M-BOM인 경우: 프로젝트의 PART_OBJID로 PART_MNG에서 파트 정보 조회하여 1레벨로 사용
+ if("ASSIGNED_EBOM".equals(bomDataType) || "ASSIGNED_MBOM".equals(bomDataType)) {
+ String partObjId = CommonUtils.checkNull(projectInfo.get("PART_OBJID"));
+
+ // PART_OBJID가 있으면 PART_MNG 테이블에서 파트 정보 조회
+ String projectPartNo = "";
+ String projectPartName = "";
+ String projectPartObjId = "";
+
+ if(!"".equals(partObjId)) {
+ Map partParam = new HashMap<>();
+ partParam.put("partObjId", partObjId);
+ Map partInfo = commonService.selectOne("partMng.getPartInfoByObjId", request, partParam);
+
+ if(partInfo != null) {
+ projectPartNo = CommonUtils.checkNull(partInfo.get("PART_NO"));
+ projectPartName = CommonUtils.checkNull(partInfo.get("PART_NAME"));
+ projectPartObjId = partObjId;
+ System.out.println("PART_MNG에서 파트 정보 조회 - PART_OBJID: " + partObjId + ", PART_NO: " + projectPartNo + ", PART_NAME: " + projectPartName);
+ }
+ }
+
+ // PART_OBJID로 조회 실패 시 PROJECT_MGMT의 PART_NO, PART_NAME 사용 (fallback)
+ if("".equals(projectPartNo)) {
+ projectPartNo = CommonUtils.checkNull(projectInfo.get("PART_NO"));
+ projectPartName = CommonUtils.checkNull(projectInfo.get("PART_NAME"));
+ System.out.println("PROJECT_MGMT의 파트 정보 사용 (fallback) - PART_NO: " + projectPartNo + ", PART_NAME: " + projectPartName);
+ }
+
+ // 프로젝트에 파트 정보가 있고, PART_OBJID가 유효한 경우에만 1레벨 교체
+ // PART_OBJID가 없으면 외래키 제약조건 위반으로 저장 불가
+ if(!"".equals(projectPartNo) && !"".equals(projectPartName) && !"".equals(projectPartObjId)) {
+ List |