공정검사관리 프로젝트번호 선택 안했을 경우 모든 파트 검색되도록 수정

This commit is contained in:
2026-03-09 15:33:06 +09:00
parent 4acab8caeb
commit 584cfbcb58
2 changed files with 64 additions and 55 deletions

View File

@@ -144,26 +144,15 @@ $(document).ready(function(){
fn_search();
});
// 프로젝트별 파트 목록 캐시
var _PART_LIST_CACHE = {};
// 프로젝트번호로 MBOM 파트 목록 조회
// 프로젝트번호로 MBOM 파트 목록 조회 (미선택 시 전체 조회)
function fn_getPartListByProject(projectNo) {
if (!projectNo) return [{"CODE": "", "NAME": "선택"}];
var param = {"sqlId": "common.getMbomPartListByProjectNo"};
if (projectNo) param.PROJECT_NO = projectNo;
// 캐시에 있으면 캐시에서 반환
if (_PART_LIST_CACHE[projectNo]) {
return _PART_LIST_CACHE[projectNo];
}
// 서버에서 조회
var partList = [{"CODE": "", "NAME": "선택"}].concat(
fnc_getJsonAllDataListBySqlId({"sqlId": "common.getMbomPartListByProjectNo", "PROJECT_NO": projectNo})
fnc_getJsonAllDataListBySqlId(param)
);
// 캐시에 저장
_PART_LIST_CACHE[projectNo] = partList;
return partList;
}
@@ -207,30 +196,32 @@ function fn_select2Editor(cell, onRendered, success, cancel, editorParams) {
$(select).select2("open");
});
var isCleared = false;
var isCompleted = false;
$(select).on("select2:select", function(e) {
if(isCompleted) return;
isCompleted = true;
var selectedVal = $(select).val() || "";
if(typeof editorParams.onSelect === "function") {
editorParams.onSelect(cell, selectedVal);
}
try { $(select).select2("destroy"); } catch(e) {}
success(selectedVal);
});
$(select).on("select2:clear", function(e) {
isCleared = true;
if(typeof editorParams.onSelect === "function") {
editorParams.onSelect(cell, "");
}
if(isCompleted) return;
isCompleted = true;
var $sel = $(select);
setTimeout(function() {
$(select).select2("close");
try { $sel.select2("destroy"); } catch(e) {}
success("");
}, 0);
}, 50);
});
$(select).on("select2:close", function() {
if(isCleared) return;
success($(select).val() || "");
if(isCompleted) return;
isCompleted = true;
var val = $(select).val() || "";
try { $(select).select2("destroy"); } catch(e) {}
success(val);
});
return container;
@@ -270,21 +261,7 @@ function fn_search(){
editor: fn_select2Editor,
editorParams: {
valueId: "CODE", labelId: "NAME", values: _PROJECT_LIST,
placeholder: "프로젝트 검색...",
onSelect: function(cell, selectedValue) {
var productName = "";
for(var i = 0; i < _PROJECT_LIST.length; i++) {
if(_PROJECT_LIST[i].CODE == selectedValue) {
productName = _PROJECT_LIST[i].PRODUCT_NAME || "";
break;
}
}
if(selectedValue) fn_getPartListByProject(selectedValue);
cell.getRow().update({
"PART_OBJID": "", "PART_NO": "", "PART_NAME": "",
"PRODUCT_NAME": productName
});
}
placeholder: "프로젝트 검색..."
},
formatter: function(cell) {
return fnc_customSelectFormatter(cell, {valueId:"CODE", labelId:"NAME", values:_PROJECT_LIST});
@@ -412,11 +389,28 @@ function fn_search(){
var row = cell.getRow();
var field = cell.getField();
// 프로젝트 변경 시 제품구분 설정 + 파트 초기화
if (field === 'PROJECT_OBJID') {
var projectObjid = cell.getValue() || "";
var productName = "";
for(var i = 0; i < _PROJECT_LIST.length; i++) {
if(_PROJECT_LIST[i].CODE == projectObjid) {
productName = _PROJECT_LIST[i].PRODUCT_NAME || "";
break;
}
}
fn_getPartListByProject(projectObjid);
row.update({
"PART_OBJID": "", "PART_NO": "", "PART_NAME": "",
"PRODUCT_NAME": productName
});
}
// 파트 선택 시 품번/품명 자동 설정
if (field === 'PART_OBJID') {
var partObjid = cell.getValue();
var projectObjid = row.getData().PROJECT_OBJID;
if (partObjid && projectObjid) {
if (partObjid) {
var partList = fn_getPartListByProject(projectObjid);
for (var i = 0; i < partList.length; i++) {
if (partList[i].CODE == partObjid) {

View File

@@ -3407,17 +3407,32 @@ ORDER BY COALESCE(T.REVISION, '1.0')
<!-- 프로젝트 OBJID로 MBOM 파트 목록 조회 -->
<select id="getMbomPartListByProjectNo" parameterType="map" resultType="map">
SELECT PM.OBJID AS CODE
, PM.PART_NO || ' - ' || PM.PART_NAME AS NAME
, PM.OBJID AS CODE_ID
, PM.PART_NO || ' - ' || PM.PART_NAME AS CODE_NAME
, PM.PART_NO
, PM.PART_NAME
FROM MBOM_DETAIL MD
INNER JOIN MBOM_HEADER MH ON MH.OBJID = MD.MBOM_HEADER_OBJID
INNER JOIN PROJECT_MGMT PJ ON PJ.OBJID = MH.PROJECT_OBJID
INNER JOIN PART_MNG PM ON PM.OBJID::VARCHAR = MD.PART_OBJID
WHERE PJ.OBJID = #{PROJECT_NO}
ORDER BY PM.PART_NO
<choose>
<when test="PROJECT_NO != null and PROJECT_NO != ''">
SELECT PM.OBJID AS CODE
, PM.PART_NO || ' - ' || PM.PART_NAME AS NAME
, PM.OBJID AS CODE_ID
, PM.PART_NO || ' - ' || PM.PART_NAME AS CODE_NAME
, PM.PART_NO
, PM.PART_NAME
FROM MBOM_DETAIL MD
INNER JOIN MBOM_HEADER MH ON MH.OBJID = MD.MBOM_HEADER_OBJID
INNER JOIN PROJECT_MGMT PJ ON PJ.OBJID = MH.PROJECT_OBJID
INNER JOIN PART_MNG PM ON PM.OBJID::VARCHAR = MD.PART_OBJID
WHERE PJ.OBJID = #{PROJECT_NO}
ORDER BY PM.PART_NO
</when>
<otherwise>
SELECT PM.OBJID AS CODE
, PM.PART_NO || ' - ' || PM.PART_NAME AS NAME
, PM.OBJID AS CODE_ID
, PM.PART_NO || ' - ' || PM.PART_NAME AS CODE_NAME
, PM.PART_NO
, PM.PART_NAME
FROM PART_MNG PM
WHERE PM.STATUS = 'release'
ORDER BY PM.PART_NO
</otherwise>
</choose>
</select>
</mapper>