This commit is contained in:
2025-12-19 11:49:37 +09:00
15 changed files with 222 additions and 78 deletions

View File

@@ -1655,8 +1655,8 @@ public class ProductionPlanningController extends BaseService {
// 생산유형
code_map.put("production_type_cd", commonService.bizMakeOptionList("0001832", CommonUtils.nullToEmpty((String)paramMap.get("production_type")), "common.getCodeselect"));
// 고객사
code_map.put("customer_cd", commonService.bizMakeOptionList("", CommonUtils.nullToEmpty((String)paramMap.get("customer_objid")), "common.getClientMngSupplySelect"));
// 고객사 (SUPPLY_MNG + CLIENT_MNG 통합)
code_map.put("customer_cd", commonService.bizMakeOptionList("", CommonUtils.nullToEmpty((String)paramMap.get("customer_objid")), "common.getsupplyselect"));
request.setAttribute("code_map", code_map);
}catch(Exception e){
@@ -1674,6 +1674,17 @@ public class ProductionPlanningController extends BaseService {
@ResponseBody
@RequestMapping("/productionplanning/prodPlanResultMgmtGridList.do")
public Map prodPlanResultMgmtGridList(HttpServletRequest request, @RequestParam Map<String, Object> paramMap){
// 프로젝트번호 multiple select 처리 (Java 7 호환)
String[] projectNos = request.getParameterValues("search_project_no");
if(projectNos != null && projectNos.length > 0) {
StringBuilder sb = new StringBuilder();
for(int i = 0; i < projectNos.length; i++) {
if(i > 0) sb.append(",");
sb.append(projectNos[i]);
}
paramMap.put("search_project_nos", sb.toString());
}
commonService.selectListPagingNew("productionplanning.prodPlanResultMgmtGridList", request, paramMap);
return paramMap;
}

View File

@@ -1118,8 +1118,8 @@ public class PurchaseOrderController {
code_map.put("part_type",commonService.bizMakeOptionList(Constants.PART_TYPE_CODE, (String)paramMap.get("part_type"),"common.getCodeselect"));
//발주부품
code_map.put("type",commonService.bizMakeOptionList("0001068", (String)paramMap.get("type"),"common.getCodeselect"));
//공급업체
code_map.put("partner_objid",commonService.bizMakeOptionList("", (String)paramMap.get("partner_objid"),"common.getmatersupplyselect"));
//공급업체 (공급업체 + 일반거래처 통합)
code_map.put("partner_objid",commonService.bizMakeOptionList("", (String)paramMap.get("partner_objid"),"common.getAllSupplySelect"));
//조치담당자
code_map.put("sales_mng_user_id", commonService.bizMakeOptionList("", (String)paramMap.get("sales_mng_user_id"),"common.getUserselect"));
//상태코드
@@ -1294,8 +1294,8 @@ public class PurchaseOrderController {
code_map.put("part_type",commonService.bizMakeOptionList(Constants.PART_TYPE_CODE, (String)paramMap.get("part_type"),"common.getCodeselect"));
//발주구분
code_map.put("type",commonService.bizMakeOptionList("0001068", (String)paramMap.get("type"),"common.getCodeselect"));
//공급업체
code_map.put("partner_objid",commonService.bizMakeOptionList("", (String)paramMap.get("partner_objid"),"common.getmatersupplyselect"));
//공급업체 (공급업체 + 일반거래처 통합)
code_map.put("partner_objid",commonService.bizMakeOptionList("", (String)paramMap.get("partner_objid"),"common.getAllSupplySelect"));
//조치담당자
code_map.put("sales_mng_user_id", commonService.bizMakeOptionList("", (String)paramMap.get("sales_mng_user_id"),"common.getUserselect"));
//상태코드

View File

@@ -2736,6 +2736,24 @@ ORDER BY COALESCE(T.REVISION, '1.0')
ORDER BY SUPPLY_NAME
</select>
<!-- 공급업체 + 일반거래처 통합 목록 조회 (발주서 검색용) -->
<select id="getAllSupplySelect" parameterType="map" resultType="map">
SELECT
OBJID::VARCHAR AS CODE
,SUPPLY_NAME AS NAME
,OBJID::VARCHAR AS CODE_ID
,SUPPLY_NAME AS CODE_NAME
FROM ADMIN_SUPPLY_MNG
UNION ALL
SELECT
'C_' || OBJID::VARCHAR AS CODE
,CLIENT_NM AS NAME
,'C_' || OBJID::VARCHAR AS CODE_ID
,CLIENT_NM AS CODE_NAME
FROM CLIENT_MNG
ORDER BY NAME
</select>
<!-- 일반거래처 목록 조회 (CLIENT_MNG 테이블) - 발주서용 -->
<select id="getClientMngSupplySelect" parameterType="map" resultType="map">
SELECT

View File

@@ -4416,6 +4416,10 @@
''
) AS PRODUCT_NAME,
CM.CATEGORY_CD AS CATEGORY_CODE,
COALESCE(
(SELECT CODE_NAME FROM COMM_CODE WHERE CODE_ID = CM.CATEGORY_CD LIMIT 1),
CM.CATEGORY_CD
) AS CATEGORY_CODE_NAME,
-- 생산유형 (TODO: 실제 컬럼명 확인 필요)
'' AS PRODUCTION_TYPE,
'' AS PRODUCTION_TYPE_NAME,
@@ -4472,9 +4476,12 @@
WHERE 1=1
AND PM.PROJECT_NO IS NOT NULL
AND PM.PROJECT_NO != ''
<!-- 프로젝트번호 검색 -->
<if test="search_project_no != null and search_project_no != ''">
AND UPPER(PM.PROJECT_NO) LIKE '%' || UPPER(#{search_project_no}) || '%'
<!-- 프로젝트번호 검색 (multiple select) -->
<if test="search_project_nos != null and search_project_nos != ''">
AND PM.OBJID::VARCHAR IN
<foreach item="projNo" collection="search_project_nos.split(',')" open="(" separator="," close=")">
#{projNo}
</foreach>
</if>
<!-- 제품구분 검색 -->
<if test="search_product_code != null and search_product_code != ''">
@@ -4488,9 +4495,13 @@
<if test="search_production_type != null and search_production_type != ''">
AND 1=1 <!-- TODO: 생산유형 컬럼 확인 후 조건 추가 -->
</if>
<!-- 고객사 검색 -->
<!-- 고객사 검색 (C_ 접두사 처리) -->
<if test="search_customer_objid != null and search_customer_objid != ''">
AND CM.CUSTOMER_OBJID = #{search_customer_objid}
AND (
CM.CUSTOMER_OBJID = #{search_customer_objid}
OR CM.CUSTOMER_OBJID = REPLACE(#{search_customer_objid}, 'C_', '')
OR REPLACE(CM.CUSTOMER_OBJID, 'C_', '') = REPLACE(#{search_customer_objid}, 'C_', '')
)
</if>
<!-- 요청납기 검색 -->
<if test="search_req_del_date_from != null and search_req_del_date_from != ''">

View File

@@ -2947,7 +2947,7 @@ WHERE 1=1
AND EXISTS (
SELECT 'E' FROM PROJECT_MGMT AS S_P
WHERE POM.CONTRACT_MGMT_OBJID = S_P.OBJID
AND S_P.CUSTOMER_OBJID = #{customer_cd}
AND S_P.CUSTOMER_OBJID = REPLACE(#{customer_cd}, 'C_', '')
)
</if>
<if test="customer_project_name !=null and customer_project_name != '' ">
@@ -2975,7 +2975,7 @@ WHERE 1=1
AND TO_DATE(POM.DELIVERY_DATE ,'YYYY-MM-DD') <![CDATA[ <= ]]> TO_DATE(#{delivery_end_date}, 'YYYY-MM-DD')
</if>
<if test="partner_objid !=null and partner_objid != '' ">
AND POM.PARTNER_OBJID = #{partner_objid}
AND POM.PARTNER_OBJID = REPLACE(#{partner_objid}, 'C_', '')
</if>
<if test="sales_mng_user_id !=null and sales_mng_user_id != '' ">
AND POM.SALES_MNG_USER_ID = #{sales_mng_user_id}
@@ -3110,7 +3110,7 @@ SELECT
AND EXISTS (
SELECT 'E' FROM PROJECT_MGMT AS S_P
WHERE POM.CONTRACT_MGMT_OBJID = S_P.OBJID
AND S_P.CUSTOMER_OBJID = #{customer_cd}
AND S_P.CUSTOMER_OBJID = REPLACE(#{customer_cd}, 'C_', '')
)
</if>
<if test="customer_project_name !=null and customer_project_name != '' ">
@@ -3138,7 +3138,7 @@ SELECT
AND TO_DATE(POM.DELIVERY_DATE ,'YYYY-MM-DD') <![CDATA[ <= ]]> TO_DATE(#{delivery_end_date}, 'YYYY-MM-DD')
</if>
<if test="partner_objid !=null and partner_objid != '' ">
AND POM.PARTNER_OBJID = #{partner_objid}
AND POM.PARTNER_OBJID = REPLACE(#{partner_objid}, 'C_', '')
</if>
<if test="sales_mng_user_id !=null and sales_mng_user_id != '' ">
AND POM.SALES_MNG_USER_ID = #{sales_mng_user_id}
@@ -3340,7 +3340,7 @@ WHERE 1=1
AND EXISTS (
SELECT 'E' FROM PROJECT_MGMT AS S_P
WHERE POM.CONTRACT_MGMT_OBJID = S_P.OBJID
AND S_P.CUSTOMER_OBJID = #{customer_cd}
AND S_P.CUSTOMER_OBJID = REPLACE(#{customer_cd}, 'C_', '')
)
</if>
<if test="customer_project_name !=null and customer_project_name != '' ">
@@ -3375,7 +3375,7 @@ WHERE 1=1
AND TO_DATE(POM.DELIVERY_DATE ,'YYYY-MM-DD') <![CDATA[ <= ]]> TO_DATE(#{delivery_end_date}, 'YYYY-MM-DD')
</if>
<if test="partner_objid !=null and partner_objid != '' ">
AND POM.PARTNER_OBJID = #{partner_objid}
AND POM.PARTNER_OBJID = REPLACE(#{partner_objid}, 'C_', '')
</if>
<!--
<if test="sales_mng_user_id !=null and sales_mng_user_id != '' ">
@@ -3567,7 +3567,7 @@ WHERE 1=1
AND EXISTS (
SELECT 'E' FROM PROJECT_MGMT AS S_P
WHERE POM.CONTRACT_MGMT_OBJID = S_P.OBJID
AND S_P.CUSTOMER_OBJID = #{customer_cd}
AND S_P.CUSTOMER_OBJID = REPLACE(#{customer_cd}, 'C_', '')
)
</if>
<if test="customer_project_name !=null and customer_project_name != '' ">
@@ -3602,7 +3602,7 @@ WHERE 1=1
AND TO_DATE(POM.DELIVERY_DATE ,'YYYY-MM-DD') <![CDATA[ <= ]]> TO_DATE(#{delivery_end_date}, 'YYYY-MM-DD')
</if>
<if test="partner_objid !=null and partner_objid != '' ">
AND POM.PARTNER_OBJID = #{partner_objid}
AND POM.PARTNER_OBJID = REPLACE(#{partner_objid}, 'C_', '')
</if>
<!--
<if test="sales_mng_user_id !=null and sales_mng_user_id != '' ">
@@ -4377,7 +4377,7 @@ SELECT POM.OBJID
AND TO_CHAR(TO_DATE(S1.CUR_DELIVERY_DATE ,'YYYY-MM-DD'), 'YYYY') = #{Year}
</if>
<if test="customer_cd !=null and customer_cd != '' ">
AND CM.CUSTOMER_OBJID = #{customer_cd}
AND CM.CUSTOMER_OBJID = REPLACE(#{customer_cd}, 'C_', '')
</if>
<if test="customer_project_name !=null and customer_project_name != '' ">
AND TRIM(UPPER(CM.CUSTOMER_PROJECT_NAME)) = TRIM(UPPER(#{customer_project_name}))
@@ -4408,7 +4408,7 @@ SELECT POM.OBJID
AND TO_DATE(POM.DELIVERY_DATE ,'YYYY-MM-DD') <![CDATA[ <= ]]> TO_DATE(#{delivery_end_date}, 'YYYY-MM-DD')
</if>
<if test="partner_objid !=null and partner_objid != '' ">
AND POM.PARTNER_OBJID = #{partner_objid}
AND POM.PARTNER_OBJID = REPLACE(#{partner_objid}, 'C_', '')
</if>
<!-- <if test="sales_mng_user_id !=null and sales_mng_user_id != '' ">
AND POM.SALES_MNG_USER_ID = #{sales_mng_user_id}
@@ -4427,7 +4427,7 @@ SELECT POM.OBJID
AND TO_DATE(TO_CHAR(POM.REGDATE,'YYYY-MM-DD') ,'YYYY-MM-DD') <![CDATA[ <= ]]> TO_DATE(#{reg_end_date}, 'YYYY-MM-DD')
</if>
<if test="delivery_status !=null and delivery_status != '' ">
AND (CASE WHEN 0 <![CDATA[ >= ]]> ((SELECT SUM(REAL_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 -->)) THEN '입고완료'
AND (CASE WHEN 0 <![CDATA[ >= ]]> ((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 -->)) THEN '입고완료'
WHEN TO_CHAR(NOW(),'YYYY-MM-DD') <![CDATA[ > ]]> POM.DELIVERY_DATE THEN '지연'
ELSE '입고중'
END) = #{delivery_status}

View File

@@ -830,32 +830,59 @@
ELSE '입고중'
END) = #{search_delivery_status}
</if>
<!-- 프로젝트번호 (multi select) -->
<!-- 프로젝트번호 (multi select) - OBJID로 검색 -->
<if test="project_nos != null and project_nos != ''">
AND CM.PROJECT_NO IN
AND CM.OBJID::VARCHAR IN
<foreach item="item" collection="project_nos.split(',')" open="(" separator="," close=")">
#{item}
</foreach>
</if>
<!-- 검사자 -->
<if test="inspector_id != null and inspector_id != ''">
AND IID.INSPECTOR_ID = #{inspector_id}
AND EXISTS (
SELECT 1 FROM INCOMING_INSPECTION_DETAIL IID_SUB
LEFT JOIN INCOMING_INSPECTION_DEFECT IDF_SUB ON IDF_SUB.INSPECTION_DETAIL_OBJID = IID_SUB.OBJID
WHERE IID_SUB.PURCHASE_ORDER_MASTER_OBJID = POM.OBJID::VARCHAR
AND IDF_SUB.INSPECTOR_ID = #{inspector_id}
)
</if>
<!-- 검사일 (시작) -->
<if test="inspection_start_date != null and inspection_start_date != ''">
AND IID.INSPECTION_DATE <![CDATA[ >= ]]> #{inspection_start_date}
AND EXISTS (
SELECT 1 FROM INCOMING_INSPECTION_DETAIL IID_SUB
LEFT JOIN INCOMING_INSPECTION_DEFECT IDF_SUB ON IDF_SUB.INSPECTION_DETAIL_OBJID = IID_SUB.OBJID
WHERE IID_SUB.PURCHASE_ORDER_MASTER_OBJID = POM.OBJID::VARCHAR
AND IDF_SUB.INSPECTION_DATE <![CDATA[ >= ]]> TO_DATE(#{inspection_start_date}, 'YYYY-MM-DD')
)
</if>
<!-- 검사일 (종료) -->
<if test="inspection_end_date != null and inspection_end_date != ''">
AND IID.INSPECTION_DATE <![CDATA[ <= ]]> #{inspection_end_date}
AND EXISTS (
SELECT 1 FROM INCOMING_INSPECTION_DETAIL IID_SUB
LEFT JOIN INCOMING_INSPECTION_DEFECT IDF_SUB ON IDF_SUB.INSPECTION_DETAIL_OBJID = IID_SUB.OBJID
WHERE IID_SUB.PURCHASE_ORDER_MASTER_OBJID = POM.OBJID::VARCHAR
AND IDF_SUB.INSPECTION_DATE <![CDATA[ <= ]]> TO_DATE(#{inspection_end_date}, 'YYYY-MM-DD')
)
</if>
<!-- 검사결과 -->
<if test="search_inspection_result != null and search_inspection_result != ''">
AND (CASE WHEN IID.NG_COUNT > 0 THEN 'NG'
WHEN IID.TOTAL_COUNT > 0 AND IID.TOTAL_COUNT = IID.INSPECTED_COUNT THEN 'OK'
WHEN IID.INSPECTED_COUNT > 0 THEN '검사중'
AND (CASE WHEN DEFECT.NG_COUNT > 0 THEN 'NG'
WHEN DEFECT.INSPECTION_TARGET_COUNT > 0 AND DEFECT.INSPECTION_TARGET_COUNT = DEFECT.INSPECTED_COUNT THEN 'OK'
WHEN DEFECT.INSPECTED_COUNT > 0 THEN '검사중'
ELSE '' END) = #{search_inspection_result}
</if>
<!-- 요청자 -->
<if test="request_user_id != null and request_user_id != ''">
AND IID.REQUEST_USER_ID = #{request_user_id}
</if>
<!-- 요청일 (시작) -->
<if test="request_start_date != null and request_start_date != ''">
AND IID.REQUEST_DATE <![CDATA[ >= ]]> #{request_start_date}
</if>
<!-- 요청일 (종료) -->
<if test="request_end_date != null and request_end_date != ''">
AND IID.REQUEST_DATE <![CDATA[ <= ]]> #{request_end_date}
</if>
<!-- 요청현황 필터 (수입검사 진행 리스트에서 요청완료 건만 조회) -->
<if test="request_status_filter != null and request_status_filter == '요청완료'">
AND REQ.DELIVERY_TOTAL_COUNT = REQ.SELECTED_COUNT
@@ -1100,23 +1127,23 @@
WHERE PID.MASTER_OBJID = PIM.OBJID
AND PM.PRODUCT = #{productType})
</if>
/* 품번 */
/* 품번 (OBJID 또는 품번 텍스트로 검색) */
<if test="search_part_objid != null and search_part_objid != ''">
AND EXISTS (SELECT 1 FROM PROCESS_INSPECTION_DETAIL PID
WHERE PID.MASTER_OBJID = PIM.OBJID
AND PID.PART_OBJID = #{search_part_objid})
AND (PID.PART_OBJID = #{search_part_objid} OR UPPER(PID.PART_NO) LIKE '%' || UPPER(#{search_part_objid}) || '%'))
</if>
/* 품명 */
/* 품명 (LIKE 검색) */
<if test="search_part_name != null and search_part_name != ''">
AND EXISTS (SELECT 1 FROM PROCESS_INSPECTION_DETAIL PID
WHERE PID.MASTER_OBJID = PIM.OBJID
AND PID.PART_OBJID = #{search_part_name})
AND UPPER(PID.PART_NAME) LIKE '%' || UPPER(#{search_part_name}) || '%')
</if>
/* 작업환경상태 */
/* 작업환경상태 (화면 표시 로직과 동일하게: 하나라도 불량이면 불량) */
<if test="search_work_env_status != null and search_work_env_status != ''">
AND EXISTS (SELECT 1 FROM PROCESS_INSPECTION_DETAIL PID
WHERE PID.MASTER_OBJID = PIM.OBJID
AND PID.WORK_ENV_STATUS = CASE WHEN #{search_work_env_status} = 'OK' THEN '양호' ELSE '불량' END)
AND (SELECT CASE WHEN COUNT(CASE WHEN PID.WORK_ENV_STATUS = '불량' THEN 1 END) > 0 THEN '불량' ELSE '양호' END
FROM PROCESS_INSPECTION_DETAIL PID WHERE PID.MASTER_OBJID = PIM.OBJID
) = CASE WHEN #{search_work_env_status} = 'OK' THEN '양호' ELSE '불량' END
</if>
/* 측정기 */
<if test="search_measuring_device != null and search_measuring_device != ''">