m-bom 수정

This commit is contained in:
2025-11-25 15:15:20 +09:00
parent 9a2bd56d09
commit 884dc44dd1
9 changed files with 161 additions and 39 deletions

View File

@@ -941,7 +941,7 @@ public class PartMngController {
}
Map code_map = new HashMap();
code_map.put("rev", commonService.bizMakeOptionList("", "", "common.getRevNoselect"));
//code_map.put("rev", commonService.bizMakeOptionList("", "", "common.getRevNoselect"));
code_map.put("product_code", commonService.bizMakeOptionList("", "", "common.getProductNoselect"));
// E-BOM 목록 (기존 getActiveBomList 사용)

View File

@@ -2533,7 +2533,7 @@ SELECT option_objid::VARCHAR AS CODE
<select id="getRevNoselect" parameterType="map" resultType="map">
SELECT
T.OBJID::varchar AS CODE
,COALESCE(T.REVISION, T.REV, '1.0') AS NAME
,COALESCE(T.REVISION, '1.0') AS NAME
,T1.PRODUCT_CODE AS CODE_CD
,'' AS STATUS
,T.spec_name AS ID
@@ -2541,7 +2541,7 @@ SELECT option_objid::VARCHAR AS CODE
FROM PART_BOM_REPORT T,PRODUCT_MGMT T1
WHERE T.PRODUCT_MGMT_OBJID = T1.OBJID
AND T1.OBJID = #{code}::numeric
ORDER BY COALESCE(T.REVISION, T.REV, '1.0')
ORDER BY COALESCE(T.REVISION, '1.0')
</select>

View File

@@ -3493,6 +3493,30 @@
LIMIT 1
</select>
<!-- 프로젝트의 활성 M-BOM 목록 조회 -->
<select id="getActiveMbomsByProjectId" parameterType="map" resultType="com.pms.common.UpperKeyMap">
SELECT * FROM MBOM_HEADER
WHERE PROJECT_OBJID = #{projectObjId}
AND (STATUS = 'Y' OR STATUS = 'ACTIVE')
ORDER BY REGDATE DESC
</select>
<!-- M-BOM HEADER 비활성화 -->
<update id="inactivateMbomHeader" parameterType="map">
UPDATE MBOM_HEADER
SET STATUS = 'INACTIVE',
EDIT_DATE = NOW()
WHERE OBJID = #{mbomHeaderObjid}
</update>
<!-- M-BOM DETAIL 비활성화 -->
<update id="inactivateMbomDetail" parameterType="map">
UPDATE MBOM_DETAIL
SET STATUS = 'INACTIVE',
EDIT_DATE = NOW()
WHERE MBOM_HEADER_OBJID = #{mbomHeaderObjid}
</update>
<!-- MBOM_HEADER 삽입 -->
<insert id="insertMbomHeader" parameterType="map">
INSERT INTO MBOM_HEADER (

View File

@@ -1016,9 +1016,45 @@ public class ProductionPlanningService {
boolean result = false;
try {
sqlSession = SqlMapConfig.getInstance().getSqlSession();
sqlSession = SqlMapConfig.getInstance().getSqlSession(false); // 수동 커밋
String projectObjId = CommonUtils.checkNull(paramMap.get("projectObjId"));
// 1. 기존 M-BOM 데이터 비활성화 (새로운 BOM 할당 시 초기화)
if(!"".equals(projectObjId)) {
// 해당 프로젝트의 기존 활성 M-BOM HEADER 조회
Map<String, Object> queryParam = new HashMap<>();
queryParam.put("projectObjId", projectObjId);
List<Map<String, Object>> existingMboms = sqlSession.selectList("productionplanning.getActiveMbomsByProjectId", queryParam);
if(existingMboms != null && !existingMboms.isEmpty()) {
System.out.println("========== 기존 M-BOM 비활성화 ==========");
System.out.println("Project OBJID: " + projectObjId);
System.out.println("비활성화할 M-BOM 개수: " + existingMboms.size());
for(Map<String, Object> mbom : existingMboms) {
String mbomHeaderObjid = CommonUtils.checkNull(mbom.get("OBJID"));
if(!"".equals(mbomHeaderObjid)) {
Map<String, Object> inactivateParam = new HashMap<>();
inactivateParam.put("mbomHeaderObjid", mbomHeaderObjid);
// M-BOM DETAIL 비활성화
sqlSession.update("productionplanning.inactivateMbomDetail", inactivateParam);
// M-BOM HEADER 비활성화
sqlSession.update("productionplanning.inactivateMbomHeader", inactivateParam);
System.out.println("M-BOM 비활성화 완료: " + mbomHeaderObjid);
}
}
}
}
// 2. PROJECT_MGMT 업데이트 (새로운 BOM 할당 정보)
int updateCount = sqlSession.update("productionplanning.saveBomAssignment", paramMap);
result = (updateCount > 0);
sqlSession.commit();
} catch(Exception e) {
if(sqlSession != null) {