This commit is contained in:
leeheejin
2025-12-23 17:35:49 +09:00
7 changed files with 94 additions and 26 deletions

View File

@@ -1863,6 +1863,10 @@ public class ProductionPlanningController extends BaseService {
// M-BOM 목록 (셀렉트박스용)
code_map.put("mbom_list", commonService.bizMakeOptionList("", "", "productionplanning.getMbomListForSelect2"));
// M-BOM 목록 (품명 포함) - 품명 자동 입력용
List<Map> mbomListWithPartName = productionPlanningService.getMbomListWithPartName();
request.setAttribute("mbom_part_name_list", mbomListWithPartName);
request.setAttribute("code_map", code_map);
} catch(Exception e) {
e.printStackTrace();
@@ -1902,6 +1906,10 @@ public class ProductionPlanningController extends BaseService {
// M-BOM 목록 (셀렉트박스용)
code_map.put("mbom_list", commonService.bizMakeOptionList("", "", "productionplanning.getMbomListForSelect2"));
// M-BOM 목록 (품명 포함) - 품명 자동 입력용
List<Map> mbomListWithPartName = productionPlanningService.getMbomListWithPartName();
request.setAttribute("mbom_part_name_list", mbomListWithPartName);
request.setAttribute("code_map", code_map);
} catch(Exception e) {
e.printStackTrace();

View File

@@ -3969,6 +3969,17 @@
ORDER BY REGDATE DESC, MBOM_NO
</select>
<!-- M-BOM 목록 (품명 포함, 원자재소요량/반제품소요량용) -->
<select id="getMbomListWithPartName" parameterType="map" resultType="com.pms.common.UpperKeyMap">
SELECT
OBJID,
MBOM_NO,
COALESCE(PART_NAME, '') AS PART_NAME
FROM MBOM_HEADER
WHERE STATUS = 'Y'
ORDER BY REGDATE DESC, MBOM_NO
</select>
<!-- M-BOM 헤더 정보 조회 (OBJID로) -->
<select id="getMbomHeaderByObjid" parameterType="map" resultType="com.pms.common.UpperKeyMap">
SELECT

View File

@@ -4293,7 +4293,8 @@ SELECT POM.OBJID
,POM.TOTAL_PRICE
,POM.DISCOUNT_PRICE
,POM.TOTAL_SUPPLY_UNIT_PRICE
,POM.TOTAL_SUPPLY_PRICE
-- ,POM.TOTAL_SUPPLY_PRICE
,S1.TOTAL_SUPPLY_PRICE
,POM.NEGO_RATE
,POM.MULTI_MASTER_YN
,POM.MULTI_YN
@@ -4304,6 +4305,7 @@ SELECT POM.OBJID
,S1.CUR_DELIVERY_DATE
,S1.TOTAL_DELIVERY_QTY
,S1.TOTAL_DELIVERY_PRICE
,S1.TOTAL_NOT_DELIVERY_PRICE
<!-- ,(S1.TOTAL_PO_QTY - S1.TOTAL_DELIVERY_QTY - S1.TOTAL_DEFECT_QTY) AS NON_DELIVERY_QTY -->
,((SELECT SUM(ORDER_QTY::NUMERIC) FROM PURCHASE_ORDER_PART AS O WHERE POM.OBJID::VARCHAR = O.PURCHASE_ORDER_MASTER_OBJID) - (S1.TOTAL_DELIVERY_QTY <!-- - S1.TOTAL_DEFECT_QTY --> )) AS NON_DELIVERY_QTY
<!-- ,S1.TOTAL_DEFECT_QTY -->
@@ -4355,19 +4357,23 @@ SELECT POM.OBJID
LEFT OUTER JOIN(
SELECT POP.PURCHASE_ORDER_MASTER_OBJID
,SUM(POP.ORDER_QTY::NUMERIC) AS TOTAL_PO_QTY
,MAX(DH.RECEIPT_DATE) AS CUR_DELIVERY_DATE
,SUM(DH.RECEIPT_QTY::NUMERIC) AS TOTAL_DELIVERY_QTY
,SUM(pop.partner_price::NUMERIC * DH.RECEIPT_QTY::NUMERIC) AS TOTAL_DELIVERY_PRICE
<!-- ,SUM(DH.ERROR_QTY::NUMERIC) AS TOTAL_DEFECT_QTY -->
<!-- ,MAX(DH.DELIVERY_DATE) AS CUR_DELIVERY_DATE
,SUM(DH.DELIVERY_QTY::NUMERIC) AS TOTAL_DELIVERY_QTY
,SUM(DH.DEFECT_QTY::NUMERIC) AS TOTAL_DEFECT_QTY -->
,MAX(AP_AGG.MAX_RECEIPT_DATE) AS CUR_DELIVERY_DATE
,SUM(COALESCE(AP_AGG.SUM_RECEIPT_QTY, 0)) AS TOTAL_DELIVERY_QTY
-- 발주금액 = 단가 × 발주수량
,SUM(COALESCE(POP.PARTNER_PRICE::NUMERIC, 0) * COALESCE(POP.ORDER_QTY::NUMERIC, 0)) AS TOTAL_SUPPLY_PRICE
-- 입고금액 = 단가 × 입고수량
,SUM(COALESCE(POP.PARTNER_PRICE::NUMERIC, 0) * COALESCE(AP_AGG.SUM_RECEIPT_QTY, 0)) AS TOTAL_DELIVERY_PRICE
-- 미입고금액 = 단가 × (발주수량 - 입고수량)
,SUM(COALESCE(POP.PARTNER_PRICE::NUMERIC, 0) * (COALESCE(POP.ORDER_QTY::NUMERIC, 0) - COALESCE(AP_AGG.SUM_RECEIPT_QTY, 0))) AS TOTAL_NOT_DELIVERY_PRICE
FROM PURCHASE_ORDER_PART POP
LEFT OUTER JOIN ARRIVAL_PLAN DH
ON POP.OBJID = DH.ORDER_PART_OBJID
<!-- LEFT OUTER JOIN DELIVERY_HISTORY DH -->
<!-- ON POP.PART_OBJID = DH.PART_OBJID -->
LEFT OUTER JOIN (
-- ARRIVAL_PLAN을 ORDER_PART_OBJID별로 먼저 집계
SELECT ORDER_PART_OBJID
,SUM(RECEIPT_QTY::NUMERIC) AS SUM_RECEIPT_QTY
,MAX(RECEIPT_DATE) AS MAX_RECEIPT_DATE
FROM ARRIVAL_PLAN
GROUP BY ORDER_PART_OBJID
) AP_AGG ON POP.OBJID = AP_AGG.ORDER_PART_OBJID
GROUP BY POP.PURCHASE_ORDER_MASTER_OBJID
) AS S1 ON POM.OBJID::VARCHAR = S1.PURCHASE_ORDER_MASTER_OBJID
LEFT OUTER JOIN PROJECT_MGMT AS CM

View File

@@ -2102,6 +2102,29 @@ public class ProductionPlanningService {
return 0.0;
}
}
/**
* M-BOM 목록 조회 (품명 포함)
* 원자재소요량/반제품소요량 화면에서 품명 자동 입력용
* @return M-BOM 목록 (OBJID, MBOM_NO, PART_NAME)
*/
public List<Map> getMbomListWithPartName() {
List<Map> resultList = new ArrayList<>();
SqlSession sqlSession = null;
try {
sqlSession = SqlMapConfig.getInstance().getSqlSession();
resultList = sqlSession.selectList("productionplanning.getMbomListWithPartName", new HashMap<>());
// JSP에서 대문자 키로 접근하므로 변환
resultList = CommonUtils.keyChangeUpperList(resultList);
} catch(Exception e) {
e.printStackTrace();
} finally {
if(sqlSession != null) sqlSession.close();
}
return resultList;
}
/**
* 생산실적 날짜별 조회