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 |