생산관리_M-BOM관리 생성

This commit is contained in:
Johngreen
2025-10-28 17:26:18 +09:00
parent 661e1df716
commit 318e371249
6 changed files with 552 additions and 13 deletions

View File

@@ -862,16 +862,46 @@ public class ProductionPlanningController extends BaseService {
return resultMap;
}
/**
* 작업일지 팀장 확인
* @param request
* @param paramMap
* @return
*/
@ResponseBody
@RequestMapping("/productionplanning/workDiaryConfirm.do")
public Map workDiaryConfirm(HttpServletRequest request, @RequestParam Map<String, Object> paramMap){
Map resultMap = productionPlanningService.workDiaryConfirm(request, paramMap);
return resultMap;
/**
* 작업일지 팀장 확인
* @param request
* @param paramMap
* @return
*/
@ResponseBody
@RequestMapping("/productionplanning/workDiaryConfirm.do")
public Map workDiaryConfirm(HttpServletRequest request, @RequestParam Map<String, Object> paramMap){
Map resultMap = productionPlanningService.workDiaryConfirm(request, paramMap);
return resultMap;
}
/**
* 생산관리 -> M-BOM 관리 목록
* @param request
* @param paramMap
* @return
*/
@RequestMapping("/productionplanning/mBomMgmt.do")
public String mBomMgmt(HttpServletRequest request, @RequestParam Map paramMap){
Map code_map = new HashMap();
try{
request.setAttribute("code_map", code_map);
}catch(Exception e){
e.printStackTrace();
}
return "/productionplanning/mBomMgmtList";
}
/**
* 생산관리 -> M-BOM 관리 그리드 목록
* @param request
* @param paramMap
* @return
*/
@ResponseBody
@RequestMapping("/productionplanning/mBomMgmtGridList.do")
public Map mBomMgmtGridList(HttpServletRequest request, @RequestParam Map<String, Object> paramMap){
commonService.selectListPagingNew("productionplanning.mBomMgmtGridList", request, paramMap);
return paramMap;
}
}

View File

@@ -2869,4 +2869,99 @@
</if>
ORDER BY SUBSTRING(PROJECT_NO,POSITION('-' IN PROJECT_NO)+1) DESC
</select>
<!-- M-BOM 관리 목록 조회 -->
<select id="mBomMgmtGridList" parameterType="map" resultType="com.pms.common.UpperKeyMap">
SELECT
PM.OBJID,
PM.CONTRACT_OBJID,
PM.PROJECT_NO,
CM.CATEGORY_CD,
COALESCE(
(SELECT CODE_NAME FROM COMM_CODE WHERE CODE_ID = CM.CATEGORY_CD LIMIT 1),
''
) AS CATEGORY_NAME,
CM.PRODUCT,
COALESCE(
(SELECT CODE_NAME FROM COMM_CODE WHERE CODE_ID = CM.PRODUCT LIMIT 1),
''
) AS PRODUCT_NAME,
CM.AREA_CD,
COALESCE(
(SELECT CODE_NAME FROM COMM_CODE WHERE CODE_ID = CM.AREA_CD LIMIT 1),
''
) AS AREA_NAME,
TO_CHAR(PM.REGDATE, 'YYYY-MM-DD') AS RECEIPT_DATE,
CM.CUSTOMER_OBJID,
COALESCE(
(SELECT SUPPLY_NAME FROM SUPPLY_MNG WHERE OBJID = CM.CUSTOMER_OBJID::NUMERIC LIMIT 1),
''
) AS CUSTOMER_NAME,
CM.PAID_TYPE,
COALESCE(
(SELECT CODE_NAME FROM COMM_CODE WHERE CODE_ID = CM.PAID_TYPE LIMIT 1),
CASE
WHEN CM.PAID_TYPE = 'paid' THEN '유상'
WHEN CM.PAID_TYPE = 'free' THEN '무상'
ELSE ''
END
) AS PAID_TYPE_NAME,
COALESCE(PM.PART_NO, '') AS PART_NO,
COALESCE(PM.PART_NAME, '') AS PART_NAME,
-- S/N: CONTRACT_ITEM_SERIAL에서 조회
(SELECT
CASE
WHEN COUNT(*) = 0 THEN ''
WHEN COUNT(*) = 1 THEN MIN(CIS.SERIAL_NO)
ELSE MIN(CIS.SERIAL_NO) || ' 외 ' || (COUNT(*) - 1)::TEXT || '건'
END
FROM CONTRACT_ITEM CI
LEFT JOIN CONTRACT_ITEM_SERIAL CIS ON CI.OBJID = CIS.ITEM_OBJID AND UPPER(CIS.STATUS) = 'ACTIVE'
WHERE CI.CONTRACT_OBJID = PM.CONTRACT_OBJID
AND CI.PART_OBJID = PM.PART_OBJID
AND CI.STATUS = 'ACTIVE'
AND CIS.SERIAL_NO IS NOT NULL) AS SERIAL_NO,
COALESCE(PM.QUANTITY::numeric, 0) AS QUANTITY,
-- 요청납기: CONTRACT_ITEM 우선, 없으면 PROJECT_MGMT, 없으면 CONTRACT_MGMT
COALESCE(
(SELECT CI.DUE_DATE
FROM CONTRACT_ITEM CI
WHERE CI.CONTRACT_OBJID = PM.CONTRACT_OBJID
AND CI.PART_OBJID = PM.PART_OBJID
AND CI.STATUS = 'ACTIVE'),
PM.DUE_DATE,
CM.req_del_date
) AS REQ_DEL_DATE,
-- 고객요청사항: CONTRACT_ITEM에서 가져옴
COALESCE(
(SELECT CI.CUSTOMER_REQUEST
FROM CONTRACT_ITEM CI
WHERE CI.CONTRACT_OBJID = PM.CONTRACT_OBJID
AND CI.PART_OBJID = PM.PART_OBJID
AND CI.STATUS = 'ACTIVE'),
''
) AS CUSTOMER_REQUEST,
PBR.OBJID AS BOM_REPORT_OBJID,
COALESCE(PBR.STATUS, '') AS EBOM_STATUS,
COALESCE(TO_CHAR(PBR.REGDATE, 'YYYY-MM-DD'), '') AS EBOM_REGDATE,
COALESCE(PM.MBOM_STATUS, '') AS MBOM_STATUS,
'1.0' AS MBOM_VERSION,
TO_CHAR(PM.REGDATE, 'YYYY-MM-DD') AS MBOM_REGDATE
FROM
PROJECT_MGMT PM
LEFT JOIN CONTRACT_MGMT CM ON PM.CONTRACT_OBJID = CM.OBJID
LEFT JOIN PART_BOM_REPORT PBR ON PM.CONTRACT_OBJID = PBR.CONTRACT_OBJID::VARCHAR
WHERE 1=1
AND PM.PROJECT_NO IS NOT NULL
AND PM.PROJECT_NO != ''
<!-- 품번 검색 -->
<if test="search_part_no != null and search_part_no != ''">
AND PM.PART_NO LIKE '%' || #{search_part_no} || '%'
</if>
<!-- 품명 검색 -->
<if test="search_part_name != null and search_part_name != ''">
AND PM.PART_NAME LIKE '%' || #{search_part_name} || '%'
</if>
ORDER BY PM.REGDATE DESC
</select>
</mapper>

View File

@@ -898,6 +898,8 @@
FROM PROJECT_MGMT AS T
LEFT JOIN sales_registration SR ON T.PROJECT_NO = SR.project_no
WHERE 1 = 1
AND T.PROJECT_NO IS NOT NULL
AND T.PROJECT_NO != ''
<if test="orderType != null and orderType != ''">
AND T.CATEGORY_CD = #{orderType}
</if>
@@ -978,7 +980,8 @@
<if test="incoterms != null and incoterms != ''">
/* INCOTERMS 필드 없음 - 검색 조건 무시 */
</if>
ORDER BY SUBSTRING(T.PROJECT_NO, POSITION('-' IN T.PROJECT_NO)+1) DESC, T.REGDATE DESC
-- 등록일 기준 최신순 정렬 (프로젝트 번호는 보조 정렬)
ORDER BY T.REGDATE DESC, T.PROJECT_NO DESC
</select>
<!-- 매출관리 그리드 목록 개수 - project_mgmt 테이블 기반 -->
@@ -989,6 +992,8 @@
COUNT(1)::integer AS TOTAL_CNT
FROM PROJECT_MGMT AS T
WHERE 1 = 1
AND T.PROJECT_NO IS NOT NULL
AND T.PROJECT_NO != ''
<if test="orderType != null and orderType != ''">
AND T.CATEGORY_CD = #{orderType}
</if>