공정검사관리 검색조건 수정

This commit is contained in:
2025-12-16 18:06:04 +09:00
parent 8336def8cc
commit 805d0da1df
4 changed files with 129 additions and 46 deletions

View File

@@ -45,14 +45,13 @@ String menuName = CommonUtils.getMenuName(menuObjId, "공정검사 관리");
.select2-container .select2-selection--multiple .select2-selection__rendered {
overflow: auto !important;
}
#search_part_no + .select2-container,
#search_part_name + .select2-container {
width: 210px !important;
}
/* 검사결과 스타일 */
.inspection-ng { color: #dc3545; font-weight: bold; }
.inspection-ok { color: #28a745; font-weight: bold; }
/* 검색필터 아이템 스타일 */
.search-item { display: flex; align-items: center; gap: 5px; }
.search-item label { font-weight: bold; white-space: nowrap; min-width: 50px; }
.search-item input, .search-item select { height: 28px; }
</style>
<script type="text/javascript">
@@ -67,7 +66,12 @@ $(document).ready(function(){
fn_search();
}
});
// 품번/품명 Select2 AJAX 초기화
initPartSelect2Ajax("#search_part_no", "#search_part_name", "#search_part_objid", {
debug: false,
partNoPlaceholder: "품번 검색...",
partNamePlaceholder: "품명 검색..."
});
// 조회
$("#btnSearch").click(function(){
$("#page").val("1");
@@ -182,38 +186,81 @@ function fn_excelDownload(){
</div>
<div id="plmSearchZon">
<div style="display:flex; flex-wrap:wrap; gap:10px; align-items:center;">
<div class="search-item">
<label>검사일</label>
<input type="text" name="search_inspection_date_from" id="search_inspection_date_from" class="date_icon" style="width:110px;" autocomplete="off">
<span>~</span>
<input type="text" name="search_inspection_date_to" id="search_inspection_date_to" class="date_icon" style="width:110px;" autocomplete="off">
</div>
<div class="search-item">
<label>검사자</label>
<input type="text" name="search_inspector" id="search_inspector" style="width:120px;" autocomplete="off">
</div>
<div class="search-item">
<label>프로젝트번호</label>
<input type="text" name="search_project_no" id="search_project_no" style="width:120px;" autocomplete="off">
</div>
<div class="search-item">
<label>품번</label>
<input type="text" name="search_part_no" id="search_part_no" style="width:120px;" autocomplete="off">
</div>
<div class="search-item">
<label>품명</label>
<input type="text" name="search_part_name" id="search_part_name" style="width:120px;" autocomplete="off">
</div>
<div class="search-item">
<label>검사결과</label>
<select name="search_inspection_result" id="search_inspection_result" style="width:100px;">
<option value="">전체</option>
<option value="OK">OK</option>
<option value="NG">NG</option>
</select>
</div>
</div>
<table>
<tr>
<td><label for="">프로젝트번호</label></td>
<td>
<select name="search_project_no" id="search_project_no" style="width:215px;" class="select2" autocomplete="off">
<option value="">전체</option>
${code_map.project_no}
</select>
</td>
<td><label for="">제품구분</label></td>
<td>
<select name="productType" id="productType" style="width:150px;" class="select2" autocomplete="off">
<option value="">전체</option>
${code_map.product_cd}
</select>
</td>
<td><label>품번</label></td>
<td>
<select name="search_part_no" id="search_part_no" class="select2-part" style="">
<option value="">품번 선택</option>
</select>
<input type="hidden" name="search_part_objid" id="search_part_objid" value="">
</td>
<td><label>품명</label></td>
<td>
<select name="search_part_name" id="search_part_name" class="select2-part" style="">
<option value="">품명 선택</option>
</select>
</td>
<td><label for="">작업환경상태</label></td>
<td>
<select name="search_work_env_status" id="search_work_env_status" style="">
<option value="">전체</option>
<option value="OK">양호</option>
<option value="NG">불량</option>
</select>
</td>
<td><label for="">측정기</label></td>
<td>
<select name="search_measuring_device" id="search_measuring_device" style="">
<option value="">전체</option>
<option value="OK">양호</option>
<option value="NG">불량</option>
</select>
</td>
</tr>
<tr>
<td class=""><label>검사일</label></td>
<td>
<input type="text" name="search_inspection_date_from" id="search_inspection_date_from" style="width:100px;" autocomplete="off" value="${param.search_inspection_date_from}" class="date_icon">~
<input type="text" name="search_inspection_date_to" id="search_inspection_date_to" style="width:100px;" autocomplete="off" value="${param.search_inspection_date_to}" class="date_icon">
</td>
<td><label for="">검사자</label></td>
<td>
<select name="search_inspector" id="search_inspector" style="width:150px;" class="select2" autocomplete="off">
<option value="">전체</option>
${code_map.inspector_id}
</select>
</td>
<td><label for="">검사결과</label></td>
<td>
<select name="search_inspection_result" id="search_inspection_result" style="width:210px;">
<option value="">전체</option>
<option value="OK">OK</option>
<option value="NG">NG</option>
</select>
</td>
</tr>
</table>
</div>
<%@include file= "/WEB-INF/view/common/common_gridArea.jsp" %>

View File

@@ -513,6 +513,20 @@ public class QualityController {
*/
@RequestMapping("/quality/processInspectionList.do")
public String processInspectionList(HttpServletRequest request, @RequestParam Map<String, Object> paramMap){
Map code_map = new HashMap();
try {
// 프로젝트번호 목록
code_map.put("project_no", commonService.bizMakeOptionList("", (String)paramMap.get("search_project_no"), "common.getProjectNameList"));
// 검사자 목록
code_map.put("inspector_id", commonService.bizMakeOptionList("", (String)paramMap.get("search_inspector"), "common.getUserselect"));
//제품구분
code_map.put("product_cd", commonService.bizMakeOptionList("0000001", (String)paramMap.get("productType"),"common.getCodeselect"));
} catch(Exception e) {
e.printStackTrace();
}
request.setAttribute("code_map", code_map);
return "/quality/processInspectionList";
}

View File

@@ -2529,7 +2529,6 @@ SELECT option_objid::VARCHAR AS CODE
</select>
<select id="getPartInfo" parameterType="map" resultType="map">
SELECT
PART_NO

View File

@@ -1083,39 +1083,62 @@
, PIM.REMARK
FROM PROCESS_INSPECTION_MASTER PIM
WHERE 1=1
/* 프로젝트번호 */
<if test="search_project_no != null and search_project_no != ''">
AND EXISTS (SELECT 1 FROM PROCESS_INSPECTION_DETAIL PID
WHERE PID.MASTER_OBJID = PIM.OBJID
AND PID.PROJECT_OBJID = #{search_project_no})
</if>
/* 제품구분 */
<if test="productType != null and productType != ''">
AND EXISTS (SELECT 1 FROM PROCESS_INSPECTION_DETAIL PID
JOIN PROJECT_MGMT PM ON PM.OBJID = PID.PROJECT_OBJID
WHERE PID.MASTER_OBJID = PIM.OBJID
AND UPPER(PM.PROJECT_NO) LIKE UPPER('%' || #{search_project_no} || '%'))
AND PM.PRODUCT = #{productType})
</if>
<if test="search_part_no != null and search_part_no != ''">
/* 품번 */
<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 UPPER(PID.PART_NO) LIKE UPPER('%' || #{search_part_no} || '%'))
AND PID.PART_OBJID = #{search_part_objid})
</if>
/* 품명 */
<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 UPPER(PID.PART_NAME) LIKE UPPER('%' || #{search_part_name} || '%'))
AND PID.PART_OBJID = #{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)
</if>
/* 측정기 */
<if test="search_measuring_device != null and search_measuring_device != ''">
AND EXISTS (SELECT 1 FROM PROCESS_INSPECTION_DETAIL PID
WHERE PID.MASTER_OBJID = PIM.OBJID
AND PID.MEASURING_DEVICE = CASE WHEN #{search_measuring_device} = 'OK' THEN '양호' ELSE '불량' END)
</if>
/* 검사자 */
<if test="search_inspector != null and search_inspector != ''">
AND EXISTS (SELECT 1 FROM PROCESS_INSPECTION_DETAIL PID
LEFT JOIN USER_INFO U ON U.USER_ID = PID.INSPECTOR_ID
WHERE PID.MASTER_OBJID = PIM.OBJID
AND (UPPER(PID.INSPECTOR_ID) LIKE UPPER('%' || #{search_inspector} || '%')
OR UPPER(U.USER_NAME) LIKE UPPER('%' || #{search_inspector} || '%')))
AND PID.INSPECTOR_ID = #{search_inspector})
</if>
/* 검사일 (시작) */
<if test="search_inspection_date_from != null and search_inspection_date_from != ''">
AND EXISTS (SELECT 1 FROM PROCESS_INSPECTION_DETAIL PID
WHERE PID.MASTER_OBJID = PIM.OBJID
AND PID.INSPECTION_DATE <![CDATA[>=]]> #{search_inspection_date_from})
</if>
/* 검사일 (종료) */
<if test="search_inspection_date_to != null and search_inspection_date_to != ''">
AND EXISTS (SELECT 1 FROM PROCESS_INSPECTION_DETAIL PID
WHERE PID.MASTER_OBJID = PIM.OBJID
AND PID.INSPECTION_DATE <![CDATA[<=]]> #{search_inspection_date_to})
</if>
/* 검사결과 */
<if test="search_inspection_result != null and search_inspection_result != ''">
AND (SELECT CASE WHEN COUNT(CASE WHEN PID.INSPECTION_RESULT = 'NG' THEN 1 END) > 0 THEN 'NG' ELSE 'OK' END
FROM PROCESS_INSPECTION_DETAIL PID WHERE PID.MASTER_OBJID = PIM.OBJID) = #{search_inspection_result}