검색필터 점검 및 수정 완료

This commit is contained in:
leeheejin
2025-12-22 09:40:10 +09:00
parent 2ab9636a07
commit 1e18e3337e
9 changed files with 149 additions and 21 deletions

View File

@@ -3049,7 +3049,7 @@
</if>
<!-- 국내/해외 검색 -->
<if test="search_area_cd != null and search_area_cd != ''">
AND CM.AREA_CD = #{search_area_cd}
AND CODE_NAME(CM.AREA_CD) = #{search_area_cd}
</if>
<!-- 접수일 검색 -->
<if test="search_receipt_date_from != null and search_receipt_date_from != ''">
@@ -3060,7 +3060,11 @@
</if>
<!-- 고객사 검색 -->
<if test="search_customer_objid != null and search_customer_objid != ''">
AND CM.CUSTOMER_OBJID = REPLACE(#{search_customer_objid}, 'C_', '')
AND (
CM.CUSTOMER_OBJID = #{search_customer_objid}
OR CM.CUSTOMER_OBJID = REPLACE(#{search_customer_objid}, 'C_', '')
OR 'C_' || CM.CUSTOMER_OBJID = #{search_customer_objid}
)
</if>
<!-- 유/무상 검색 -->
<if test="search_paid_type != null and search_paid_type != ''">
@@ -3077,10 +3081,10 @@
</if>
<!-- 요청납기 검색 -->
<if test="search_req_del_date_from != null and search_req_del_date_from != ''">
<![CDATA[AND COALESCE(CI.DUE_DATE, PM.DUE_DATE, CM.REQ_DEL_DATE) >= TO_DATE(#{search_req_del_date_from}, 'YYYY-MM-DD')]]>
<![CDATA[AND COALESCE(CI.DUE_DATE, PM.DUE_DATE, CM.REQ_DEL_DATE) >= #{search_req_del_date_from}]]>
</if>
<if test="search_req_del_date_to != null and search_req_del_date_to != ''">
<![CDATA[AND COALESCE(CI.DUE_DATE, PM.DUE_DATE, CM.REQ_DEL_DATE) < TO_DATE(#{search_req_del_date_to}, 'YYYY-MM-DD') + INTERVAL '1 day']]>
<![CDATA[AND COALESCE(CI.DUE_DATE, PM.DUE_DATE, CM.REQ_DEL_DATE) <= #{search_req_del_date_to}]]>
</if>
<!-- 품번 검색 (대소문자 구분 없음) -->
<if test="search_part_no != null and search_part_no != ''">

View File

@@ -711,10 +711,9 @@
,DEFECT.INSPECTOR_NAME_DISPLAY AS INSPECTOR_NAME
/* 검사일: YYYY-MM-DD 외 N건 형태 */
,DEFECT.INSPECTION_DATE_DISPLAY AS INSPECTION_DATE
/* 검사결과: 하나라도 NG면 NG, 검사 대상(스킵 제외) 모두 검사완료면 OK, 일부만 검사면 검사중 */
,(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 '검사중'
/* 검사현황: 불량상세 처리결과(ACTION_RESULT)가 전부 있으면 완료, 일부만 있으면 진행중 */
,(CASE WHEN DEFECT.DEFECT_TOTAL_COUNT > 0 AND DEFECT.DEFECT_TOTAL_COUNT = DEFECT.ACTION_RESULT_COUNT THEN '완료'
WHEN DEFECT.ACTION_RESULT_COUNT > 0 THEN '진행중'
ELSE '' END) AS INSPECTION_RESULT
/* 검사여부: 검사가 하나라도 있으면 '검사', 모두 스킵이면 '스킵', 아무것도 없으면 빈값 */
@@ -764,6 +763,10 @@
END AS INSPECTION_DATE_DISPLAY
/* 검사 대상 건수 (스킵 제외, 검사인 항목만) */
,COUNT(CASE WHEN IID2.INSPECTION_YN = '검사' THEN 1 END) AS INSPECTION_TARGET_COUNT
/* 불량상세 테이블 전체 건수 (검사인 항목 기준) */
,COUNT(CASE WHEN IID2.INSPECTION_YN = '검사' THEN IDF.OBJID END) AS DEFECT_TOTAL_COUNT
/* 처리결과(ACTION_RESULT) 입력된 건수 */
,COUNT(CASE WHEN IID2.INSPECTION_YN = '검사' AND IDF.ACTION_RESULT IS NOT NULL AND IDF.ACTION_RESULT != '' THEN 1 END) AS ACTION_RESULT_COUNT
/* 검사결과 입력된 건수 */
,COUNT(CASE WHEN IDF.INSPECTION_RESULT IS NOT NULL AND IDF.INSPECTION_RESULT != '' THEN 1 END) AS INSPECTED_COUNT
,COUNT(CASE WHEN IDF.INSPECTION_RESULT = 'NG' THEN 1 END) AS NG_COUNT
@@ -885,6 +888,40 @@
AND REQ.DELIVERY_TOTAL_COUNT = REQ.SELECTED_COUNT
AND REQ.SELECTED_COUNT > 0
</if>
<!-- 제품구분 검색 -->
<if test="search_product_cd != null and search_product_cd != ''">
AND CM.PRODUCT = #{search_product_cd}
</if>
<!-- 검사여부 검색 -->
<if test="search_inspection_yn != null and search_inspection_yn != ''">
<if test="search_inspection_yn == '검사'">
AND IID.INSPECTION_YN_COUNT > 0
</if>
<if test="search_inspection_yn == '스킵'">
AND IID.SKIP_YN_COUNT > 0 AND IID.INSPECTION_YN_COUNT = 0
</if>
</if>
<!-- 요청현황 검색 -->
<if test="search_request_status != null and search_request_status != ''">
<if test="search_request_status == '미요청'">
AND REQ.DELIVERY_TOTAL_COUNT > 0 AND REQ.SELECTED_COUNT = 0
</if>
<if test="search_request_status == '요청중'">
AND REQ.SELECTED_COUNT > 0 AND REQ.SELECTED_COUNT <![CDATA[ < ]]> REQ.DELIVERY_TOTAL_COUNT
</if>
<if test="search_request_status == '요청완료'">
AND REQ.DELIVERY_TOTAL_COUNT > 0 AND REQ.SELECTED_COUNT = REQ.DELIVERY_TOTAL_COUNT
</if>
</if>
<!-- 검사현황 검색 -->
<if test="search_inspection_status != null and search_inspection_status != ''">
<if test="search_inspection_status == '완료'">
AND DEFECT.DEFECT_TOTAL_COUNT > 0 AND DEFECT.DEFECT_TOTAL_COUNT = DEFECT.ACTION_RESULT_COUNT
</if>
<if test="search_inspection_status == '진행중'">
AND DEFECT.ACTION_RESULT_COUNT > 0 AND DEFECT.DEFECT_TOTAL_COUNT != DEFECT.ACTION_RESULT_COUNT
</if>
</if>
ORDER BY POM.REGDATE DESC
</select>
@@ -1108,6 +1145,7 @@
FROM PROCESS_INSPECTION_DETAIL PID WHERE PID.MASTER_OBJID = PIM.OBJID
) AS INSPECTION_RESULT
, PIM.REMARK
, (SELECT COUNT(*) FROM ATTACH_FILE_INFO F WHERE F.TARGET_OBJID = PIM.OBJID AND F.DOC_TYPE = 'PROCESS_INSPECTION_FILE' AND UPPER(F.STATUS) = 'ACTIVE') AS PROCESS_INSPECTION_FILE_CNT
FROM PROCESS_INSPECTION_MASTER PIM
WHERE 1=1
/* 프로젝트번호 */
@@ -2317,6 +2355,14 @@
, IID.REMARK
, IMI.PURCHASE_ORDER_MASTER_OBJID
, POM.PURCHASE_ORDER_NO
/* 불량수량 합계 (INCOMING_INSPECTION_DETAIL.DEFECT_QTY에 저장된 값 사용) */
, COALESCE(NULLIF(IID.DEFECT_QTY, '')::NUMERIC, 0) AS DEFECT_QTY_SUM
/* 불량율 (불량수량합계 / 입고수량 * 100) */
, CASE WHEN IMI.RECEIPT_QTY::NUMERIC > 0
THEN ROUND(COALESCE(NULLIF(IID.DEFECT_QTY, '')::NUMERIC, 0) / IMI.RECEIPT_QTY::NUMERIC * 100, 2)
ELSE NULL END AS LEFT_DEFECT_RATE
/* 검사성적서 파일 수 */
, (SELECT COUNT(*) FROM ATTACH_FILE_INFO AFI WHERE AFI.TARGET_OBJID = IID.OBJID AND AFI.DOC_TYPE = 'INSPECTION_REPORT' AND UPPER(AFI.STATUS) = 'ACTIVE') AS INSPECTION_FILE_CNT
FROM INVENTORY_MGMT_IN IMI
INNER JOIN INVENTORY_MGMT IM ON IM.OBJID = IMI.PARENT_OBJID
INNER JOIN PART_MNG PM ON PM.OBJID::VARCHAR = IM.PART_OBJID

View File

@@ -684,7 +684,8 @@ function fn_openPurchaseListPopup() {
<label for="search_area_cd">국내/해외</label>
<select name="search_area_cd" id="search_area_cd" style="width:100px" class="select2">
<option value="">선택</option>
${code_map.area_cd}
<option value="국내">국내</option>
<option value="해외">해외</option>
</select>
</div>

View File

@@ -259,6 +259,33 @@ function fn_deliveryAcceptanceViewPopUp(objId,DELIVERY_STATUS){
</select>
</td>
<td><label for="">제품구분</label></td>
<td>
<select name="search_product_cd" id="search_product_cd" class="select2" autocomplete="off" style="width:120px;">
<option value="">전체</option>
${code_map.product_cd}
</select>
</td>
<td><label for="">검사여부</label></td>
<td>
<select name="search_inspection_yn" id="search_inspection_yn" class="select2" autocomplete="off" style="width:120px;">
<option value="">전체</option>
<option value="검사">검사</option>
<option value="스킵">스킵</option>
</select>
</td>
<td><label for="">요청현황</label></td>
<td>
<select name="search_request_status" id="search_request_status" class="select2" autocomplete="off" style="width:120px;">
<option value="">전체</option>
<option value="미요청">미요청</option>
<option value="요청중">요청중</option>
<option value="요청완료">요청완료</option>
</select>
</td>
<td><label for="">요청자</label></td>
<td><select name="request_user_id" id="request_user_id" class="select2" autocomplete="off" style="width:120px;"><option value="">선택</option>${code_map.request_user_id}</select></td>

View File

@@ -320,6 +320,14 @@ function fn_deliveryAcceptanceViewPopUp(objId,DELIVERY_STATUS){
</select>
</td>
<td><label for="">제품구분</label></td>
<td>
<select name="search_product_cd" id="search_product_cd" class="select2" autocomplete="off" style="width:120px;">
<option value="">전체</option>
${code_map.product_cd}
</select>
</td>
<td><label for="">검사자</label></td>
<td><select name="inspector_id" id="inspector_id" class="select2" autocomplete="off" style="width:120px;"><option value="">선택</option>${code_map.inspector_id}</select></td>
@@ -329,12 +337,12 @@ function fn_deliveryAcceptanceViewPopUp(objId,DELIVERY_STATUS){
<input type="text" name="inspection_end_date" id="inspection_end_date" style="width:100px;" autocomplete="off" value="${param.inspection_end_date }" class="date_icon">
</td>
<td><label for="">검사결과</label></td>
<td><label for="">검사현황</label></td>
<td>
<select name="search_inspection_result" id="search_inspection_result" class="select2" autocomplete="off" style="width:120px;">
<select name="search_inspection_status" id="search_inspection_status" class="select2" autocomplete="off" style="width:120px;">
<option value="">전체</option>
<option value="OK">OK</option>
<option value="NG">NG</option>
<option value="완료">완료</option>
<option value="진행중">진행중</option>
</select>
</td>
</tr>

View File

@@ -889,12 +889,12 @@ public class ProductionPlanningController extends BaseService {
public String mBomMgmt(HttpServletRequest request, @RequestParam Map paramMap){
Map code_map = new HashMap();
try{
// 주문유형 (0001406)
code_map.put("category_cd", commonService.bizMakeOptionList("0001406", (String)paramMap.get("search_category_cd"), "common.getCodeselect"));
// 주문유형 (0000167)
code_map.put("category_cd", commonService.bizMakeOptionList("0000167", (String)paramMap.get("search_category_cd"), "common.getCodeselect"));
// 제품구분 (0000001)
code_map.put("product_cd", commonService.bizMakeOptionList("0000001", (String)paramMap.get("search_product_cd"), "common.getCodeselect"));
// 국내/해외 (0001395)
code_map.put("area_cd", commonService.bizMakeOptionList("0001395", (String)paramMap.get("search_area_cd"), "common.getCodeselect"));
// 국내/해외 (0000172)
code_map.put("area_cd", commonService.bizMakeOptionList("0000172", (String)paramMap.get("search_area_cd"), "common.getCodeselect"));
// 고객사 (SUPPLY_MNG + CLIENT_MNG)
code_map.put("customer_cd", commonService.bizMakeOptionList("", (String)paramMap.get("search_customer_objid"), "common.getAllSupplySelect"));

View File

@@ -276,6 +276,8 @@ public class QualityController {
code_map.put("partner_objid", commonService.bizMakeOptionList("", (String)paramMap.get("partner_objid"), "common.getClientMngSupplySelect"));
// 요청자
code_map.put("request_user_id", commonService.bizMakeOptionList("", (String)paramMap.get("request_user_id"), "common.getUserselect"));
// 제품구분
code_map.put("product_cd", commonService.bizMakeOptionList("0000001", (String)paramMap.get("search_product_cd"), "common.getCodeselect"));
list = commonService.selectListPaging("quality.getIncomingInspectionList", request, paramMap);
} catch(Exception e) {
@@ -306,6 +308,8 @@ public class QualityController {
code_map.put("partner_objid", commonService.bizMakeOptionList("", (String)paramMap.get("partner_objid"), "common.getClientMngSupplySelect"));
// 검사자
code_map.put("inspector_id", commonService.bizMakeOptionList("", (String)paramMap.get("inspector_id"), "common.getUserselect"));
// 제품구분
code_map.put("product_cd", commonService.bizMakeOptionList("0000001", (String)paramMap.get("search_product_cd"), "common.getCodeselect"));
list = commonService.selectListPaging("quality.getIncomingInspectionList", request, paramMap);
} catch(Exception e) {

View File

@@ -3049,7 +3049,7 @@
</if>
<!-- 국내/해외 검색 -->
<if test="search_area_cd != null and search_area_cd != ''">
AND CM.AREA_CD = #{search_area_cd}
AND CODE_NAME(CM.AREA_CD) = #{search_area_cd}
</if>
<!-- 접수일 검색 -->
<if test="search_receipt_date_from != null and search_receipt_date_from != ''">
@@ -3060,7 +3060,11 @@
</if>
<!-- 고객사 검색 -->
<if test="search_customer_objid != null and search_customer_objid != ''">
AND CM.CUSTOMER_OBJID = REPLACE(#{search_customer_objid}, 'C_', '')
AND (
CM.CUSTOMER_OBJID = #{search_customer_objid}
OR CM.CUSTOMER_OBJID = REPLACE(#{search_customer_objid}, 'C_', '')
OR 'C_' || CM.CUSTOMER_OBJID = #{search_customer_objid}
)
</if>
<!-- 유/무상 검색 -->
<if test="search_paid_type != null and search_paid_type != ''">
@@ -3077,10 +3081,10 @@
</if>
<!-- 요청납기 검색 -->
<if test="search_req_del_date_from != null and search_req_del_date_from != ''">
<![CDATA[AND COALESCE(CI.DUE_DATE, PM.DUE_DATE, CM.REQ_DEL_DATE) >= TO_DATE(#{search_req_del_date_from}, 'YYYY-MM-DD')]]>
<![CDATA[AND COALESCE(CI.DUE_DATE, PM.DUE_DATE, CM.REQ_DEL_DATE) >= #{search_req_del_date_from}]]>
</if>
<if test="search_req_del_date_to != null and search_req_del_date_to != ''">
<![CDATA[AND COALESCE(CI.DUE_DATE, PM.DUE_DATE, CM.REQ_DEL_DATE) < TO_DATE(#{search_req_del_date_to}, 'YYYY-MM-DD') + INTERVAL '1 day']]>
<![CDATA[AND COALESCE(CI.DUE_DATE, PM.DUE_DATE, CM.REQ_DEL_DATE) <= #{search_req_del_date_to}]]>
</if>
<!-- 품번 검색 (대소문자 구분 없음) -->
<if test="search_part_no != null and search_part_no != ''">

View File

@@ -888,6 +888,40 @@
AND REQ.DELIVERY_TOTAL_COUNT = REQ.SELECTED_COUNT
AND REQ.SELECTED_COUNT > 0
</if>
<!-- 제품구분 검색 -->
<if test="search_product_cd != null and search_product_cd != ''">
AND CM.PRODUCT = #{search_product_cd}
</if>
<!-- 검사여부 검색 -->
<if test="search_inspection_yn != null and search_inspection_yn != ''">
<if test="search_inspection_yn == '검사'">
AND IID.INSPECTION_YN_COUNT > 0
</if>
<if test="search_inspection_yn == '스킵'">
AND IID.SKIP_YN_COUNT > 0 AND IID.INSPECTION_YN_COUNT = 0
</if>
</if>
<!-- 요청현황 검색 -->
<if test="search_request_status != null and search_request_status != ''">
<if test="search_request_status == '미요청'">
AND REQ.DELIVERY_TOTAL_COUNT > 0 AND REQ.SELECTED_COUNT = 0
</if>
<if test="search_request_status == '요청중'">
AND REQ.SELECTED_COUNT > 0 AND REQ.SELECTED_COUNT <![CDATA[ < ]]> REQ.DELIVERY_TOTAL_COUNT
</if>
<if test="search_request_status == '요청완료'">
AND REQ.DELIVERY_TOTAL_COUNT > 0 AND REQ.SELECTED_COUNT = REQ.DELIVERY_TOTAL_COUNT
</if>
</if>
<!-- 검사현황 검색 -->
<if test="search_inspection_status != null and search_inspection_status != ''">
<if test="search_inspection_status == '완료'">
AND DEFECT.DEFECT_TOTAL_COUNT > 0 AND DEFECT.DEFECT_TOTAL_COUNT = DEFECT.ACTION_RESULT_COUNT
</if>
<if test="search_inspection_status == '진행중'">
AND DEFECT.ACTION_RESULT_COUNT > 0 AND DEFECT.DEFECT_TOTAL_COUNT != DEFECT.ACTION_RESULT_COUNT
</if>
</if>
ORDER BY POM.REGDATE DESC
</select>