Merge pull request 'V2025120101' (#92) from V2025120101 into main
Reviewed-on: #92
This commit was merged in pull request #92.
This commit is contained in:
@@ -162,14 +162,16 @@ $(function(){
|
||||
fn_closeWindow();
|
||||
});
|
||||
|
||||
/* 주석처리: 가공납기/연삭납기 일괄 적용 버튼 이벤트
|
||||
// 일괄 적용 버튼 클릭
|
||||
$("#btnApplyBulkDeadline").click(function(){
|
||||
fn_applyBulkDeadline();
|
||||
});
|
||||
*/
|
||||
|
||||
});
|
||||
|
||||
// 가공납기/연삭납기 일괄 적용
|
||||
/* 주석처리: 가공납기/연삭납기 일괄 적용 함수
|
||||
function fn_applyBulkDeadline() {
|
||||
var processingDeadline = $("#bulk_processing_deadline").val();
|
||||
var grindingDeadline = $("#bulk_grinding_deadline").val();
|
||||
@@ -206,6 +208,7 @@ function fn_applyBulkDeadline() {
|
||||
alert("적용할 데이터가 없습니다.");
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
// M-BOM 템플릿 로드 (Machine 이외 제품)
|
||||
function fn_loadMbomTemplate() {
|
||||
@@ -926,7 +929,7 @@ function compareItemFields(before, after) {
|
||||
<input type="button" value="닫기" class="plm_btns" id="btnClose">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<!-- <tr>
|
||||
<td><label for="bulk_processing_deadline">가공납기 일괄</label></td>
|
||||
<td>
|
||||
<input type="date" name="bulk_processing_deadline" id="bulk_processing_deadline" value="">
|
||||
@@ -940,7 +943,7 @@ function compareItemFields(before, after) {
|
||||
<td>
|
||||
<input type="button" value="일괄 적용" class="plm_btns" id="btnApplyBulkDeadline">
|
||||
</td>
|
||||
</tr>
|
||||
</tr> -->
|
||||
</table>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
@@ -537,6 +537,7 @@ function fn_initGrid() {
|
||||
values: ['업체A', '업체B', '업체C'] // TODO: 실제 가공업체 목록으로 교체
|
||||
}
|
||||
},
|
||||
/* 주석처리: 가공납기, 연삭납기 컬럼
|
||||
{
|
||||
headerHozAlign: 'center',
|
||||
hozAlign: 'center',
|
||||
@@ -555,6 +556,7 @@ function fn_initGrid() {
|
||||
titleFormatter: function() { return '<span class="editable-header">연삭납기</span>'; },
|
||||
editor: 'date'
|
||||
},
|
||||
*/
|
||||
{
|
||||
headerHozAlign: 'center',
|
||||
hozAlign: 'left',
|
||||
@@ -843,7 +845,7 @@ function fn_searchMbom(searchParams) {
|
||||
});
|
||||
}
|
||||
|
||||
// 가공납기/연삭납기 일괄 적용
|
||||
/* 주석처리: 가공납기/연삭납기 일괄 적용
|
||||
function applyBulkDeadline(processingDeadline, grindingDeadline) {
|
||||
if(!_tabulGrid) {
|
||||
console.error("그리드가 초기화되지 않았습니다.");
|
||||
@@ -877,6 +879,7 @@ function applyBulkDeadline(processingDeadline, grindingDeadline) {
|
||||
console.log("업데이트 완료 - 업데이트된 행:", updatedCount);
|
||||
return updatedCount;
|
||||
}
|
||||
*/
|
||||
|
||||
// M-BOM 트리 데이터 수집 (저장용)
|
||||
function getMbomTreeData() {
|
||||
|
||||
105
WebContent/WEB-INF/view/quality/incomingInspectionExcel.jsp
Normal file
105
WebContent/WEB-INF/view/quality/incomingInspectionExcel.jsp
Normal file
@@ -0,0 +1,105 @@
|
||||
<%@ page isThreadSafe = "true" %>
|
||||
<%@ page buffer="256kb" %>
|
||||
<%@ page autoFlush = "true" %>
|
||||
<%@ page contentType="application/vnd.ms-excel;charset=UTF-8" %>
|
||||
<%@ page import="com.pms.common.utils.*"%>
|
||||
<%@ page import="java.util.*" %>
|
||||
<%
|
||||
java.text.SimpleDateFormat frm= new java.text.SimpleDateFormat ("yyyy_MM_dd_HH_mm");
|
||||
Calendar cal = Calendar.getInstance();
|
||||
String todayKor = frm.format(cal.getTime());
|
||||
|
||||
String excelName = "품질관리_수입검사관리";
|
||||
String encodeName = excelName + todayKor + ".xls";
|
||||
String fileName = java.net.URLEncoder.encode(encodeName,"UTF-8");
|
||||
|
||||
response.setHeader("Content-Disposition", "attachment;filename=" + fileName);
|
||||
response.setHeader("Content-Description", "JSP Generated Data");
|
||||
ArrayList list = (ArrayList)request.getAttribute("LIST");
|
||||
%>
|
||||
<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns="http://www.w3.org/TR/REC-html40">
|
||||
<head>
|
||||
<meta http-equiv=Content-Type content="text/html; charset=UTF-8">
|
||||
<meta name=ProgId content=Excel.Sheet>
|
||||
<meta name=Generator content="Microsoft Excel 11">
|
||||
<title><%=Constants.SYSTEM_NAME%></title>
|
||||
</head>
|
||||
<body class="backcolor">
|
||||
<form name="form1" action="" method="post">
|
||||
<section class="min_part_search">
|
||||
<div class="pdm_menu_name">
|
||||
<h2>
|
||||
<span>수입검사 관리</span>
|
||||
</h2>
|
||||
</div>
|
||||
<div class="contents_page_basic_margin">
|
||||
<div class="pdm_table_wrap">
|
||||
<table class="pdm_table_noImg" style="text-align:center;" border="1">
|
||||
<tr class="pdm_thead" align="center" style="background:yellow; font-weight:bold;">
|
||||
<td>No.</td>
|
||||
<!-- 수입검사 관리 리스트 정보 -->
|
||||
<td>품의서 No</td>
|
||||
<td>발주서 No</td>
|
||||
<td>프로젝트번호</td>
|
||||
<td>품번</td>
|
||||
<td>품명</td>
|
||||
<td>공급업체</td>
|
||||
<td>입고결과</td>
|
||||
<!-- 검사 등록 상세 정보 -->
|
||||
<td>입고일</td>
|
||||
<td>입고수량</td>
|
||||
<td>검사구분</td>
|
||||
<td>검사여부</td>
|
||||
<td>불량유형</td>
|
||||
<td>불량원인</td>
|
||||
<td>처리현황</td>
|
||||
<td>검사수량</td>
|
||||
<td>불량수량</td>
|
||||
<td>불량율(%)</td>
|
||||
<td>검사결과</td>
|
||||
<td>검사자</td>
|
||||
<td>검사일</td>
|
||||
<td>비고</td>
|
||||
</tr>
|
||||
<%
|
||||
if(list != null && !list.isEmpty()){
|
||||
for(int i = 0 ; i < list.size() ; i++){
|
||||
HashMap map = (HashMap)list.get(i);
|
||||
%>
|
||||
<tr>
|
||||
<td align="center"><%=i+1%></td>
|
||||
<!-- 수입검사 관리 리스트 정보 -->
|
||||
<td align="center"><%=CommonUtils.checkNull(map.get("proposal_no"))%></td>
|
||||
<td align="center"><%=CommonUtils.checkNull(map.get("purchase_order_no"))%></td>
|
||||
<td align="center"><%=CommonUtils.checkNull(map.get("project_no"))%></td>
|
||||
<td align="left"><%=CommonUtils.checkNull(map.get("part_no"))%></td>
|
||||
<td align="left"><%=CommonUtils.checkNull(map.get("part_name"))%></td>
|
||||
<td align="left"><%=CommonUtils.checkNull(map.get("partner_name"))%></td>
|
||||
<td align="center"><%=CommonUtils.checkNull(map.get("delivery_status"))%></td>
|
||||
<!-- 검사 등록 상세 정보 -->
|
||||
<td align="center"><%=CommonUtils.checkNull(map.get("delivery_date"))%></td>
|
||||
<td align="right"><%=CommonUtils.checkNull(map.get("delivery_qty"))%></td>
|
||||
<td align="center"><%=CommonUtils.checkNull(map.get("inspection_type"))%></td>
|
||||
<td align="center"><%=CommonUtils.checkNull(map.get("inspection_yn"))%></td>
|
||||
<td align="center"><%=CommonUtils.checkNull(map.get("defect_type_name"))%></td>
|
||||
<td align="center"><%=CommonUtils.checkNull(map.get("defect_reason_name"))%></td>
|
||||
<td align="center"><%=CommonUtils.checkNull(map.get("action_status"))%></td>
|
||||
<td align="right"><%=CommonUtils.checkNull(map.get("inspection_qty"))%></td>
|
||||
<td align="right"><%=CommonUtils.checkNull(map.get("defect_qty"))%></td>
|
||||
<td align="right"><%=CommonUtils.checkNull(map.get("defect_rate"))%></td>
|
||||
<td align="center"><%=CommonUtils.checkNull(map.get("inspection_result"))%></td>
|
||||
<td align="center"><%=CommonUtils.checkNull(map.get("inspector_name"))%></td>
|
||||
<td align="center"><%=CommonUtils.checkNull(map.get("inspection_date"))%></td>
|
||||
<td align="left"><%=CommonUtils.checkNull(map.get("remark"))%></td>
|
||||
</tr>
|
||||
<%
|
||||
}
|
||||
}
|
||||
%>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</form>
|
||||
</body>
|
||||
</html>
|
||||
97
WebContent/WEB-INF/view/quality/processInspectionExcel.jsp
Normal file
97
WebContent/WEB-INF/view/quality/processInspectionExcel.jsp
Normal file
@@ -0,0 +1,97 @@
|
||||
<%@ page isThreadSafe = "true" %>
|
||||
<%@ page buffer="256kb" %>
|
||||
<%@ page autoFlush = "true" %>
|
||||
<%@ page contentType="application/vnd.ms-excel;charset=UTF-8" %>
|
||||
<%@ page import="com.pms.common.utils.*"%>
|
||||
<%@ page import="java.util.*" %>
|
||||
<%
|
||||
java.text.SimpleDateFormat frm= new java.text.SimpleDateFormat ("yyyy_MM_dd_HH_mm");
|
||||
Calendar cal = Calendar.getInstance();
|
||||
String todayKor = frm.format(cal.getTime());
|
||||
|
||||
String excelName = "품질관리_공정검사관리";
|
||||
String encodeName = excelName + todayKor + ".xls";
|
||||
String fileName = java.net.URLEncoder.encode(encodeName,"UTF-8");
|
||||
|
||||
response.setHeader("Content-Disposition", "attachment;filename=" + fileName);
|
||||
response.setHeader("Content-Description", "JSP Generated Data");
|
||||
ArrayList list = (ArrayList)request.getAttribute("LIST");
|
||||
%>
|
||||
<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns="http://www.w3.org/TR/REC-html40">
|
||||
<head>
|
||||
<meta http-equiv=Content-Type content="text/html; charset=UTF-8">
|
||||
<meta name=ProgId content=Excel.Sheet>
|
||||
<meta name=Generator content="Microsoft Excel 11">
|
||||
<title><%=Constants.SYSTEM_NAME%></title>
|
||||
</head>
|
||||
<body class="backcolor">
|
||||
<form name="form1" action="" method="post">
|
||||
<section class="min_part_search">
|
||||
<div class="pdm_menu_name">
|
||||
<h2>
|
||||
<span>공정검사 관리</span>
|
||||
</h2>
|
||||
</div>
|
||||
<div class="contents_page_basic_margin">
|
||||
<div class="pdm_table_wrap">
|
||||
<table class="pdm_table_noImg" style="text-align:center;" border="1">
|
||||
<tr class="pdm_thead" align="center" style="background:yellow; font-weight:bold;">
|
||||
<td>No.</td>
|
||||
<!-- 공정검사 마스터 정보 -->
|
||||
<td>검사일</td>
|
||||
<td>검사자</td>
|
||||
<td>마스터 비고</td>
|
||||
<!-- 공정검사 디테일 정보 -->
|
||||
<td>공정</td>
|
||||
<td>프로젝트번호</td>
|
||||
<td>품번</td>
|
||||
<td>품명</td>
|
||||
<td>검사수량</td>
|
||||
<td>불량수량</td>
|
||||
<td>불량율(%)</td>
|
||||
<td>작업환경상태</td>
|
||||
<td>측정기</td>
|
||||
<td>담당부서</td>
|
||||
<td>담당자</td>
|
||||
<td>처리현황</td>
|
||||
<td>검사결과</td>
|
||||
<td>상세 비고</td>
|
||||
</tr>
|
||||
<%
|
||||
if(list != null && !list.isEmpty()){
|
||||
for(int i = 0 ; i < list.size() ; i++){
|
||||
HashMap map = (HashMap)list.get(i);
|
||||
%>
|
||||
<tr>
|
||||
<td align="center"><%=i+1%></td>
|
||||
<!-- 공정검사 마스터 정보 -->
|
||||
<td align="center"><%=CommonUtils.checkNull(map.get("inspection_date"))%></td>
|
||||
<td align="center"><%=CommonUtils.checkNull(map.get("inspector_name"))%></td>
|
||||
<td align="left"><%=CommonUtils.checkNull(map.get("master_remark"))%></td>
|
||||
<!-- 공정검사 디테일 정보 -->
|
||||
<td align="center"><%=CommonUtils.checkNull(map.get("process_name"))%></td>
|
||||
<td align="center"><%=CommonUtils.checkNull(map.get("project_no"))%></td>
|
||||
<td align="left"><%=CommonUtils.checkNull(map.get("part_no"))%></td>
|
||||
<td align="left"><%=CommonUtils.checkNull(map.get("part_name"))%></td>
|
||||
<td align="right"><%=CommonUtils.checkNull(map.get("inspection_qty"))%></td>
|
||||
<td align="right"><%=CommonUtils.checkNull(map.get("defect_qty"))%></td>
|
||||
<td align="right"><%=CommonUtils.checkNull(map.get("defect_rate"))%></td>
|
||||
<td align="center"><%=CommonUtils.checkNull(map.get("work_env_status"))%></td>
|
||||
<td align="center"><%=CommonUtils.checkNull(map.get("measuring_device"))%></td>
|
||||
<td align="center"><%=CommonUtils.checkNull(map.get("dept_name"))%></td>
|
||||
<td align="center"><%=CommonUtils.checkNull(map.get("user_name"))%></td>
|
||||
<td align="center"><%=CommonUtils.checkNull(map.get("action_status"))%></td>
|
||||
<td align="center"><%=CommonUtils.checkNull(map.get("inspection_result"))%></td>
|
||||
<td align="left"><%=CommonUtils.checkNull(map.get("detail_remark"))%></td>
|
||||
</tr>
|
||||
<%
|
||||
}
|
||||
}
|
||||
%>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</form>
|
||||
</body>
|
||||
</html>
|
||||
@@ -2989,7 +2989,10 @@ $(document).ready(function() {
|
||||
|
||||
if (gridToUse && gridToUse.getRows && gridToUse.getRows().length > 0) {
|
||||
var pageTitle = $('.plm_menu_name_gdnsi h2 span').text().trim();
|
||||
$('.btnArea').append("<input type='button' class='plm_btns excelBtn' value='Excel Download'>");
|
||||
// 이미 엑셀 버튼이 있으면 추가하지 않음 (#btnExcel 또는 .excel 클래스 체크)
|
||||
if ($('#btnExcel').length === 0 && $('.btnArea .excel').length === 0) {
|
||||
$('.btnArea').append("<input type='button' class='plm_btns excelBtn' value='Excel Download'>");
|
||||
}
|
||||
|
||||
$(document).on('click', '.excelBtn', async function() {
|
||||
console.log("Excel 다운로드 버튼 클릭됨");
|
||||
|
||||
@@ -4187,7 +4187,7 @@
|
||||
V.STOCK_QTY,
|
||||
V.SHORTAGE_QTY,
|
||||
V.VENDOR,
|
||||
(SELECT SUPPLY_NAME FROM ADMIN_SUPPLY_MNG WHERE OBJID::VARCHAR = V.VENDOR) AS VENDOR_NAME,
|
||||
(SELECT CLIENT_NM FROM CLIENT_MNG WHERE OBJID::VARCHAR = V.VENDOR) AS VENDOR_NAME,
|
||||
V.UNIT_PRICE,
|
||||
V.TOTAL_PRICE,
|
||||
V.CURRENCY,
|
||||
|
||||
@@ -843,38 +843,100 @@
|
||||
WHERE OBJID = #{OBJID}
|
||||
</update>
|
||||
|
||||
<!-- 수입검사 목록 조회 (엑셀용) -->
|
||||
<!-- 수입검사 목록 조회 (엑셀용) - 상세 정보 포함 -->
|
||||
<select id="getIncomingInspectionListForExcel" parameterType="map" resultType="map">
|
||||
SELECT A.OBJID
|
||||
, A.PROPOSAL_NO
|
||||
, A.PURCHASE_ORDER_NO
|
||||
, A.PROJECT_NO
|
||||
, A.PART_NO
|
||||
, A.PART_NAME
|
||||
, A.PARTNER_NAME
|
||||
, A.DELIVERY_STATUS
|
||||
, B.INSPECTOR_ID
|
||||
, (SELECT USER_NAME FROM USER_INFO WHERE USER_ID = B.INSPECTOR_ID) AS INSPECTOR_NAME
|
||||
, TO_CHAR(B.INSPECTION_DATE, 'YYYY-MM-DD') AS INSPECTION_DATE
|
||||
, B.INSPECTION_RESULT
|
||||
FROM (
|
||||
SELECT POM.OBJID
|
||||
, SRM.PROPOSAL_NO
|
||||
, POM.PURCHASE_ORDER_NO
|
||||
, PJ.PROJECT_NO
|
||||
, POD.PART_NO
|
||||
, POD.PART_NAME
|
||||
, PM.PARTNER_NAME
|
||||
, CASE WHEN NVL(POD.DELIVERY_QTY, 0) >= NVL(POD.ORDER_QTY, 0) THEN '입고완료' ELSE '입고중' END AS DELIVERY_STATUS
|
||||
FROM PMS_PURCHASE_ORDER_MASTER POM
|
||||
LEFT JOIN PMS_PURCHASE_ORDER_DETAIL POD ON POM.OBJID = POD.PURCHASE_ORDER_MASTER_OBJID
|
||||
LEFT JOIN PMS_SALES_REQUEST_MASTER SRM ON POM.SALES_REQUEST_MASTER_OBJID = SRM.OBJID
|
||||
LEFT JOIN PMS_PROJECT_INFO PJ ON POM.PROJECT_OBJID = PJ.OBJID
|
||||
LEFT JOIN PARTNER_MNG PM ON POM.PARTNER_OBJID = PM.OBJID
|
||||
WHERE 1=1
|
||||
) A
|
||||
LEFT JOIN QUALITY_INCOMING_INSPECTION B ON A.OBJID = B.PURCHASE_ORDER_MASTER_OBJID
|
||||
ORDER BY A.PURCHASE_ORDER_NO DESC
|
||||
SELECT
|
||||
/* 수입검사 관리 리스트 정보 */
|
||||
(SELECT REQUEST_MNG_NO FROM SALES_REQUEST_MASTER WHERE OBJID::VARCHAR = POM.SALES_REQUEST_OBJID) AS PROPOSAL_NO
|
||||
, POM.PURCHASE_ORDER_NO
|
||||
, CM.PROJECT_NO
|
||||
, PM.PART_NO
|
||||
, PM.PART_NAME
|
||||
, (SELECT CLIENT_NM FROM CLIENT_MNG WHERE OBJID::VARCHAR = POM.PARTNER_OBJID) AS PARTNER_NAME
|
||||
, (CASE WHEN 0 <![CDATA[ >= ]]> ((SELECT SUM(ORDER_QTY::NUMERIC) FROM PURCHASE_ORDER_PART AS O WHERE POM.OBJID::VARCHAR = O.PURCHASE_ORDER_MASTER_OBJID) - COALESCE(S1.TOTAL_DELIVERY_QTY, 0)) THEN '입고완료'
|
||||
WHEN TO_CHAR(NOW(),'YYYY-MM-DD') <![CDATA[ > ]]> POM.DELIVERY_DATE THEN '지연'
|
||||
ELSE '입고중'
|
||||
END) AS DELIVERY_STATUS
|
||||
/* 검사 등록 상세 정보 (입고내역 + 검사상세) */
|
||||
, TO_CHAR(IMI.REGDATE, 'YYYY-MM-DD') AS DELIVERY_DATE
|
||||
, IMI.RECEIPT_QTY AS DELIVERY_QTY
|
||||
, IID.INSPECTION_TYPE
|
||||
, COALESCE(IID.INSPECTION_YN, '검사') AS INSPECTION_YN
|
||||
, (SELECT CODE_NAME FROM COMM_CODE WHERE CODE_ID = IID.DEFECT_TYPE) AS DEFECT_TYPE_NAME
|
||||
, (SELECT CODE_NAME FROM COMM_CODE WHERE CODE_ID = IID.DEFECT_REASON) AS DEFECT_REASON_NAME
|
||||
, IID.ACTION_STATUS
|
||||
, IID.INSPECTION_QTY
|
||||
, IID.DEFECT_QTY
|
||||
, CASE WHEN NULLIF(IID.INSPECTION_QTY, '')::NUMERIC > 0
|
||||
THEN ROUND((COALESCE(NULLIF(IID.DEFECT_QTY, '')::NUMERIC, 0) / NULLIF(IID.INSPECTION_QTY, '')::NUMERIC) * 100, 2)
|
||||
ELSE NULL END AS DEFECT_RATE
|
||||
, IID.INSPECTION_RESULT
|
||||
, IID.REMARK
|
||||
, (SELECT USER_NAME FROM USER_INFO WHERE USER_ID = IID.INSPECTOR_ID) AS INSPECTOR_NAME
|
||||
, IID.INSPECTION_DATE
|
||||
FROM PURCHASE_ORDER_MASTER POM
|
||||
LEFT OUTER JOIN PROJECT_MGMT CM ON POM.CONTRACT_MGMT_OBJID = CM.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
|
||||
FROM PURCHASE_ORDER_PART POP
|
||||
LEFT OUTER JOIN ARRIVAL_PLAN DH ON POP.OBJID = DH.ORDER_PART_OBJID
|
||||
GROUP BY POP.PURCHASE_ORDER_MASTER_OBJID
|
||||
) S1 ON POM.OBJID::VARCHAR = S1.PURCHASE_ORDER_MASTER_OBJID
|
||||
/* 입고내역과 조인 (검사등록 팝업과 동일한 구조) */
|
||||
LEFT OUTER JOIN INVENTORY_MGMT_IN IMI ON IMI.PURCHASE_ORDER_MASTER_OBJID = POM.OBJID::VARCHAR
|
||||
LEFT OUTER JOIN INVENTORY_MGMT IM ON IM.OBJID = IMI.PARENT_OBJID
|
||||
LEFT OUTER JOIN PART_MNG PM ON PM.OBJID::VARCHAR = IM.PART_OBJID
|
||||
LEFT OUTER JOIN INCOMING_INSPECTION_DETAIL IID ON IID.INVENTORY_IN_OBJID = IMI.OBJID
|
||||
WHERE 1=1
|
||||
AND POM.MAIL_SEND_DATE IS NOT NULL
|
||||
AND (MULTI_MASTER_YN = 'Y' OR NVL(MULTI_MASTER_YN, '') != 'Y' AND NVL(MULTI_YN, '') != 'Y')
|
||||
/* 입고된 건만 조회 (검사등록된 데이터) */
|
||||
AND IMI.OBJID IS NOT NULL
|
||||
<if test="search_proposal_no != null and search_proposal_no != ''">
|
||||
AND (SELECT REQUEST_MNG_NO FROM SALES_REQUEST_MASTER WHERE OBJID::VARCHAR = POM.SALES_REQUEST_OBJID) LIKE '%' || #{search_proposal_no} || '%'
|
||||
</if>
|
||||
<if test="search_purchase_order_no != null and search_purchase_order_no != ''">
|
||||
AND TRIM(UPPER(POM.PURCHASE_ORDER_NO)) LIKE '%' || TRIM(UPPER(#{search_purchase_order_no})) || '%'
|
||||
</if>
|
||||
<if test="project_nos != null and project_nos != ''">
|
||||
AND CM.PROJECT_NO IN
|
||||
<foreach item="item" collection="project_nos.split(',')" open="(" separator="," close=")">
|
||||
#{item}
|
||||
</foreach>
|
||||
</if>
|
||||
<if test="search_part_no != null and search_part_no != ''">
|
||||
AND TRIM(UPPER(PM.PART_NO)) LIKE '%' || TRIM(UPPER(#{search_part_no})) || '%'
|
||||
</if>
|
||||
<if test="search_part_name != null and search_part_name != ''">
|
||||
AND TRIM(UPPER(PM.PART_NAME)) LIKE '%' || TRIM(UPPER(#{search_part_name})) || '%'
|
||||
</if>
|
||||
<if test="search_partner != null and search_partner != ''">
|
||||
AND POM.PARTNER_OBJID = #{search_partner}
|
||||
</if>
|
||||
<if test="search_delivery_status != null and search_delivery_status != ''">
|
||||
<if test="search_delivery_status == '입고완료'">
|
||||
AND 0 <![CDATA[ >= ]]> ((SELECT SUM(ORDER_QTY::NUMERIC) FROM PURCHASE_ORDER_PART AS O WHERE POM.OBJID::VARCHAR = O.PURCHASE_ORDER_MASTER_OBJID) - COALESCE(S1.TOTAL_DELIVERY_QTY, 0))
|
||||
</if>
|
||||
<if test="search_delivery_status == '입고중'">
|
||||
AND 0 <![CDATA[ < ]]> ((SELECT SUM(ORDER_QTY::NUMERIC) FROM PURCHASE_ORDER_PART AS O WHERE POM.OBJID::VARCHAR = O.PURCHASE_ORDER_MASTER_OBJID) - COALESCE(S1.TOTAL_DELIVERY_QTY, 0))
|
||||
</if>
|
||||
</if>
|
||||
<if test="inspector_id != null and inspector_id != ''">
|
||||
AND IID.INSPECTOR_ID = #{inspector_id}
|
||||
</if>
|
||||
<if test="inspection_start_date != null and inspection_start_date != ''">
|
||||
AND IID.INSPECTION_DATE <![CDATA[>=]]> #{inspection_start_date}
|
||||
</if>
|
||||
<if test="inspection_end_date != null and inspection_end_date != ''">
|
||||
AND IID.INSPECTION_DATE <![CDATA[<=]]> #{inspection_end_date}
|
||||
</if>
|
||||
<if test="search_inspection_result != null and search_inspection_result != ''">
|
||||
AND IID.INSPECTION_RESULT = #{search_inspection_result}
|
||||
</if>
|
||||
ORDER BY POM.PURCHASE_ORDER_NO DESC, PM.PART_NO
|
||||
</select>
|
||||
|
||||
<!-- =====================================================
|
||||
@@ -1096,6 +1158,60 @@
|
||||
DELETE FROM PROCESS_INSPECTION_DETAIL WHERE MASTER_OBJID = #{MASTER_OBJID}
|
||||
</delete>
|
||||
|
||||
<!-- 공정검사 목록 조회 (엑셀용) - 상세 정보 포함 -->
|
||||
<select id="getProcessInspectionListForExcel" parameterType="map" resultType="map">
|
||||
SELECT
|
||||
/* 공정검사 마스터 정보 */
|
||||
PIM.INSPECTION_DATE
|
||||
, (SELECT U.USER_NAME FROM USER_INFO U WHERE U.USER_ID = PIM.INSPECTOR_ID) AS INSPECTOR_NAME
|
||||
, PIM.REMARK AS MASTER_REMARK
|
||||
/* 공정검사 디테일 정보 */
|
||||
, (SELECT CC.CODE_NAME FROM COMM_CODE CC WHERE CC.CODE_ID = PID.PROCESS_CD) AS PROCESS_NAME
|
||||
, (SELECT PM.PROJECT_NO FROM PROJECT_MGMT PM WHERE PM.OBJID = PID.PROJECT_OBJID) AS PROJECT_NO
|
||||
, PID.PART_NO
|
||||
, PID.PART_NAME
|
||||
, PID.INSPECTION_QTY
|
||||
, PID.DEFECT_QTY
|
||||
, CASE WHEN COALESCE(PID.INSPECTION_QTY, 0) > 0
|
||||
THEN ROUND((COALESCE(PID.DEFECT_QTY, 0)::NUMERIC / PID.INSPECTION_QTY::NUMERIC) * 100, 2)
|
||||
ELSE NULL END AS DEFECT_RATE
|
||||
, PID.WORK_ENV_STATUS
|
||||
, PID.MEASURING_DEVICE
|
||||
, (SELECT DEPT_NAME FROM DEPT_INFO WHERE DEPT_CODE = PID.DEPT_CD) AS DEPT_NAME
|
||||
, (SELECT U2.USER_NAME FROM USER_INFO U2 WHERE U2.USER_ID = PID.USER_ID) AS USER_NAME
|
||||
, PID.REMARK AS DETAIL_REMARK
|
||||
, PID.ACTION_STATUS
|
||||
, PID.INSPECTION_RESULT
|
||||
FROM PROCESS_INSPECTION_MASTER PIM
|
||||
INNER JOIN PROCESS_INSPECTION_DETAIL PID ON PID.MASTER_OBJID = PIM.OBJID
|
||||
WHERE 1=1
|
||||
<if test="search_project_no != null and search_project_no != ''">
|
||||
AND (SELECT PM2.PROJECT_NO FROM PROJECT_MGMT PM2 WHERE PM2.OBJID = PID.PROJECT_OBJID) LIKE '%' || #{search_project_no} || '%'
|
||||
</if>
|
||||
<if test="search_part_no != null and search_part_no != ''">
|
||||
AND UPPER(PID.PART_NO) LIKE UPPER('%' || #{search_part_no} || '%')
|
||||
</if>
|
||||
<if test="search_part_name != null and search_part_name != ''">
|
||||
AND UPPER(PID.PART_NAME) LIKE UPPER('%' || #{search_part_name} || '%')
|
||||
</if>
|
||||
<if test="search_inspector != null and search_inspector != ''">
|
||||
AND (
|
||||
UPPER(PIM.INSPECTOR_ID) LIKE UPPER('%' || #{search_inspector} || '%')
|
||||
OR UPPER((SELECT USER_NAME FROM USER_INFO WHERE USER_ID = PIM.INSPECTOR_ID)) LIKE UPPER('%' || #{search_inspector} || '%')
|
||||
)
|
||||
</if>
|
||||
<if test="search_inspection_date_from != null and search_inspection_date_from != ''">
|
||||
AND PIM.INSPECTION_DATE <![CDATA[>=]]> #{search_inspection_date_from}
|
||||
</if>
|
||||
<if test="search_inspection_date_to != null and search_inspection_date_to != ''">
|
||||
AND PIM.INSPECTION_DATE <![CDATA[<=]]> #{search_inspection_date_to}
|
||||
</if>
|
||||
<if test="search_inspection_result != null and search_inspection_result != ''">
|
||||
AND PID.INSPECTION_RESULT = #{search_inspection_result}
|
||||
</if>
|
||||
ORDER BY PIM.INSPECTION_DATE DESC, PIM.REG_DATE DESC, PID.REG_DATE
|
||||
</select>
|
||||
|
||||
<!-- =====================================================
|
||||
반제품검사 관리
|
||||
===================================================== -->
|
||||
|
||||
@@ -776,14 +776,14 @@ public class QualityService extends BaseService{
|
||||
}
|
||||
|
||||
/**
|
||||
* 공정검사 목록 조회 (엑셀용)
|
||||
* 공정검사 목록 조회 (엑셀용) - 상세 정보 포함
|
||||
*/
|
||||
public List getProcessInspectionListForExcel(Map paramMap){
|
||||
List resultList = new ArrayList();
|
||||
SqlSession sqlSession = null;
|
||||
try{
|
||||
sqlSession = SqlMapConfig.getInstance().getSqlSession();
|
||||
resultList = sqlSession.selectList("quality.getProcessInspectionList", paramMap);
|
||||
resultList = sqlSession.selectList("quality.getProcessInspectionListForExcel", paramMap);
|
||||
}catch(Exception e){
|
||||
e.printStackTrace();
|
||||
}finally{
|
||||
|
||||
Reference in New Issue
Block a user