품질관리_수입검사요청, 관리 수정

This commit is contained in:
2025-12-16 16:11:36 +09:00
parent 0d908006ff
commit 9bf6a94331
4 changed files with 90 additions and 22 deletions

View File

@@ -105,7 +105,14 @@ var columns = [
{headerHozAlign:'center', hozAlign:'left', minWidth:120, widthGrow:2, title:'품번', field:'PART_NO'},
{headerHozAlign:'center', hozAlign:'left', minWidth:150, widthGrow:3, title:'품명', field:'PART_NAME'},
{headerHozAlign:'center', hozAlign:'left', minWidth:130, widthGrow:2, title:'공급업체', field:'PARTNER_NAME'},
{headerHozAlign:'center', hozAlign:'center', minWidth:80, widthGrow:1, title:'입고결과', field:'DELIVERY_STATUS'},
{headerHozAlign:'center', hozAlign:'center', minWidth:80, widthGrow:1, title:'입고결과', field:'DELIVERY_STATUS',
formatter:fnc_createGridAnchorTag,
cellClick:function(e, cell){
var objId = fnc_checkNull(cell.getData().OBJID);
var DELIVERY_STATUS = fnc_checkNull(cell.getData().DELIVERY_STATUS);
fn_deliveryAcceptanceViewPopUp(objId,DELIVERY_STATUS);
}
},
{headerHozAlign:'center', hozAlign:'center', minWidth:100, widthGrow:1, title:'요청일', field:'REQUEST_DATE'},
{headerHozAlign:'center', hozAlign:'center', minWidth:80, widthGrow:1, title:'요청자', field:'REQUEST_USER_NAME'},
{headerHozAlign:'center', hozAlign:'center', minWidth:100, widthGrow:1, title:'검사여부', field:'INSPECTION_YN'},
@@ -184,6 +191,23 @@ function fn_excelDownload(){
form.submit();
form.action = "";
}
function fn_deliveryAcceptanceViewPopUp(objId,DELIVERY_STATUS){
var popup_width = 1560;
var popup_height = 1050;
var hiddenForm = document.hiddenForm;
var target = "deliveryAcceptancePopUp";
var url = "/purchaseOrder/deliveryAcceptanceFormPopUp_new.do";
fn_centerPopup(popup_width, popup_height, "", target);
hiddenForm.action = url;
hiddenForm.PURCHASE_ORDER_MASTER_OBJID.value = objId;
hiddenForm.DELIVERY_STATUS.value = DELIVERY_STATUS;
hiddenForm.actionType.value = 'view'; // 뷰 전용으로 설정
hiddenForm.target = target;
hiddenForm.submit();
}
</script>
<body>
@@ -191,6 +215,7 @@ function fn_excelDownload(){
<input type="hidden" name="OBJID" id="OBJID">
<input type="hidden" name="PURCHASE_ORDER_NO" id="PURCHASE_ORDER_NO">
<input type="hidden" name="PURCHASE_ORDER_MASTER_OBJID" id="PURCHASE_ORDER_MASTER_OBJID">
<input type="hidden" name="DELIVERY_STATUS" id="DELIVERY_STATUS">
<input type="hidden" name="actionType" id="actionType">
</form>

View File

@@ -150,6 +150,14 @@ function fn_search(){
value: selectedProjectNos
}).appendTo('#form1');
// 수입검사 진행 리스트는 요청완료 건만 조회
$('input[name="request_status_filter"]').remove();
$('<input>').attr({
type: 'hidden',
name: 'request_status_filter',
value: '요청완료'
}).appendTo('#form1');
_tabulGrid = fnc_tabul_search(_tabul_layout_fitColumns, _tabulGrid, "/quality/incomingInspectionGridList.do", columns, true);
}

View File

@@ -626,40 +626,68 @@ function fn_openPartDetailPopUp(partObjId) {
function fn_openImageFilePopUp(objId) {
var popup_width = 650;
var popup_height = 550;
var url = "/common/ImageRegistPopup.do?targetObjId=" + objId + "&docType=INSPECTION_DEFECT_IMAGE&docTypeName=검사이미지&callbackFnc=fn_refreshRightGrid";
var url = "/common/ImageRegistPopup.do?targetObjId=" + objId + "&docType=INSPECTION_DEFECT_IMAGE&docTypeName=검사이미지";
var popup = window.open(url, "imageFilePopUp", "width=" + popup_width + ",height=" + popup_height + ",scrollbars=yes,resizable=yes");
// 팝업 닫힘 감지하여 우측 그리드 새로고침
var checkPopup = setInterval(function() {
if(popup.closed) {
clearInterval(checkPopup);
fn_refreshRightGrid();
}
}, 500);
// 팝업 닫힘 감지하여 해당 행의 파일 카운트만 업데이트
fn_watchPopupClose(popup, objId, 'IMAGE_FILE_CNT', 'INSPECTION_DEFECT_IMAGE');
}
// 첨부파일 팝업
function fn_openAttachFilePopUp(objId) {
var popup_width = 800;
var popup_height = 300;
var params = "?targetObjId=" + objId + "&docType=INSPECTION_DEFECT_FILE&docTypeName=검사첨부&callbackFnc=fn_refreshRightGrid";
var url = "/projectConcept/FileRegistPopup.do" + params;
var params = "?targetObjId=" + objId + "&docType=INSPECTION_DEFECT_FILE&docTypeName=검사첨부";
var url = "/common/FileRegistPopup.do" + params;
var popup = window.open(url, "attachFilePopUp", "width=" + popup_width + ",height=" + popup_height + ",scrollbars=yes,resizable=yes");
// 팝업 닫힘 감지하여 우측 그리드 새로고침
// 팝업 닫힘 감지하여 해당 행의 파일 카운트만 업데이트
fn_watchPopupClose(popup, objId, 'ATTACH_FILE_CNT', 'INSPECTION_DEFECT_FILE');
}
// 팝업 닫힘 감지 및 파일 카운트 업데이트
function fn_watchPopupClose(popup, objId, fieldName, docType) {
var checkPopup = setInterval(function() {
if(popup.closed) {
clearInterval(checkPopup);
fn_refreshRightGrid();
// 파일 카운트 조회 후 해당 행만 업데이트
fn_updateRightGridFileCnt(objId, fieldName, docType);
}
}, 500);
}
// 우측 그리드 새로고침 (파일 업로드 후 콜백)
function fn_refreshRightGrid() {
if(selectedDetailObjid) {
fn_searchRightGrid(selectedDetailObjid);
}
// 우측 그리드 파일 카운트 업데이트
function fn_updateRightGridFileCnt(objId, fieldName, docType) {
$.ajax({
url: "/common/getFileList.do",
type: "POST",
data: { targetObjId: objId, docType: docType },
dataType: "json",
success: function(data) {
var cnt = data ? data.length : 0;
var rows = rightGrid.getRows();
rows.forEach(function(row) {
if(row.getData().OBJID === objId) {
var updateData = {};
updateData[fieldName] = cnt;
row.update(updateData);
}
});
}
});
}
// 공통 fnc_tabulCallbackFnc 오버라이드 (이 페이지에서는 rightGrid 사용)
function fnc_tabulCallbackFnc(objId, docType, columnField, fileCnt) {
var rows = rightGrid.getRows();
rows.forEach(function(row) {
if(row.getData().OBJID === objId) {
var updateData = {};
var targetField = (columnField && columnField !== '') ? columnField : 'FILE_CNT';
updateData[targetField] = fileCnt;
row.update(updateData);
}
});
}
// =====================================================

View File

@@ -711,9 +711,9 @@
,DEFECT.INSPECTOR_NAME_DISPLAY AS INSPECTOR_NAME
/* 검사일: YYYY-MM-DD 외 N건 형태 */
,DEFECT.INSPECTION_DATE_DISPLAY AS INSPECTION_DATE
/* 검사결과: 하나라도 NG면 NG */
/* 검사결과: 하나라도 NG면 NG, 검사 대상(스킵 제외) 모두 검사완료면 OK, 일부만 검사면 검사중 */
,(CASE WHEN DEFECT.NG_COUNT > 0 THEN 'NG'
WHEN DEFECT.DEFECT_TOTAL_COUNT > 0 AND DEFECT.DEFECT_TOTAL_COUNT = DEFECT.INSPECTED_COUNT THEN 'OK'
WHEN DEFECT.INSPECTION_TARGET_COUNT > 0 AND DEFECT.INSPECTION_TARGET_COUNT = DEFECT.INSPECTED_COUNT THEN 'OK'
WHEN DEFECT.INSPECTED_COUNT > 0 THEN '검사중'
ELSE '' END) AS INSPECTION_RESULT
@@ -743,7 +743,7 @@
FROM INCOMING_INSPECTION_DETAIL
GROUP BY PURCHASE_ORDER_MASTER_OBJID
) AS IID ON POM.OBJID::VARCHAR = IID.PURCHASE_ORDER_MASTER_OBJID
/* 불량상세 테이블에서 검사일/검사자/검사결과 집계 */
/* 불량상세 테이블에서 검사일/검사자/검사결과 집계 (스킵 항목 제외) */
LEFT OUTER JOIN (
SELECT IID2.PURCHASE_ORDER_MASTER_OBJID
/* 검사자: 여러명이면 "XXX 외 N건" 형태로 표시 */
@@ -762,7 +762,9 @@
THEN TO_CHAR(MIN(IDF.INSPECTION_DATE), 'YYYY-MM-DD')
ELSE ''
END AS INSPECTION_DATE_DISPLAY
,COUNT(*) AS DEFECT_TOTAL_COUNT
/* 검사 대상 건수 (스킵 제외, 검사인 항목만) */
,COUNT(CASE WHEN IID2.INSPECTION_YN = '검사' THEN 1 END) AS INSPECTION_TARGET_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
FROM INCOMING_INSPECTION_DETAIL IID2
@@ -851,6 +853,11 @@
WHEN IID.INSPECTED_COUNT > 0 THEN '검사중'
ELSE '' END) = #{search_inspection_result}
</if>
<!-- 요청현황 필터 (수입검사 진행 리스트에서 요청완료 건만 조회) -->
<if test="request_status_filter != null and request_status_filter == '요청완료'">
AND REQ.DELIVERY_TOTAL_COUNT = REQ.SELECTED_COUNT
AND REQ.SELECTED_COUNT > 0
</if>
ORDER BY POM.REGDATE DESC
</select>