mbom 가공업체 RPS 기본 선택
This commit is contained in:
@@ -21,6 +21,32 @@ body, html {
|
||||
}
|
||||
</style>
|
||||
<script>
|
||||
// 가공업체 목록 (OBJID -> 업체명 변환용)
|
||||
var vendorMap = {};
|
||||
|
||||
// 가공업체 목록 로드
|
||||
function loadVendorList() {
|
||||
$.ajax({
|
||||
url: '/common/getClientMngList.do',
|
||||
method: 'POST',
|
||||
async: false,
|
||||
dataType: 'json',
|
||||
success: function(data) {
|
||||
if(data && data.length > 0) {
|
||||
data.forEach(function(item) {
|
||||
vendorMap[item.CODE_ID] = item.NAME;
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// OBJID를 업체명으로 변환
|
||||
function getVendorName(objid) {
|
||||
if(!objid) return '';
|
||||
return vendorMap[objid] || objid;
|
||||
}
|
||||
|
||||
// confirm/alert 헬퍼 함수
|
||||
function showConfirm(options) {
|
||||
if(typeof options === 'string') {
|
||||
@@ -50,6 +76,9 @@ $(function(){
|
||||
|
||||
$('.select2').select2();
|
||||
|
||||
// 가공업체 목록 로드
|
||||
loadVendorList();
|
||||
|
||||
// 페이지 로드 시 프로젝트 정보로 검색 필드 자동 입력
|
||||
<c:if test="${not empty info}">
|
||||
$("#search_part_no").val("${info.PART_NO}");
|
||||
@@ -610,9 +639,18 @@ function generateUpdateHistoryTable(beforeData, afterData) {
|
||||
for(var j = 0; j < fieldChanges.length; j++) {
|
||||
var fc = fieldChanges[j];
|
||||
var fieldNameKr = getFieldNameKorean(fc.field);
|
||||
|
||||
// 가공업체 필드는 OBJID를 업체명으로 변환
|
||||
var beforeVal = fc.before;
|
||||
var afterVal = fc.after;
|
||||
if(fc.field === 'PROCESSING_VENDOR' || fc.field === 'processingVendor') {
|
||||
beforeVal = beforeVal ? getVendorName(beforeVal) : null;
|
||||
afterVal = afterVal ? getVendorName(afterVal) : null;
|
||||
}
|
||||
|
||||
html += "<strong>" + fieldNameKr + ":</strong> ";
|
||||
html += "<span class='before-value'>" + (fc.before || "(없음)") + "</span> → ";
|
||||
html += "<span class='after-value'>" + (fc.after || "(없음)") + "</span>";
|
||||
html += "<span class='before-value'>" + (beforeVal || "(없음)") + "</span> → ";
|
||||
html += "<span class='after-value'>" + (afterVal || "(없음)") + "</span>";
|
||||
if(j < fieldChanges.length - 1) html += "<br>";
|
||||
}
|
||||
|
||||
@@ -706,7 +744,7 @@ function oldGenerateUpdateHistoryTable(beforeData, afterData) {
|
||||
html += "<td>" + (item.rawMaterialSize || "") + "</td>";
|
||||
html += "<td>" + (item.rawMaterialPartNo || "") + "</td>";
|
||||
html += "<td>" + (item.requiredQty || "") + "</td>";
|
||||
html += "<td>" + (item.processingVendor || "") + "</td>";
|
||||
html += "<td>" + (item.processingVendorName || item.processingVendor || "") + "</td>";
|
||||
html += "<td>" + (item.processingDeadline || "") + "</td>";
|
||||
html += "<td>" + (item.grindingDeadline || "") + "</td>";
|
||||
html += "<td>" + (item.orderQty || "") + "</td>";
|
||||
@@ -728,7 +766,7 @@ function oldGenerateUpdateHistoryTable(beforeData, afterData) {
|
||||
html += "<td>" + (item.rawMaterialSize || "") + "</td>";
|
||||
html += "<td>" + (item.rawMaterialPartNo || "") + "</td>";
|
||||
html += "<td>" + (item.requiredQty || "") + "</td>";
|
||||
html += "<td>" + (item.processingVendor || "") + "</td>";
|
||||
html += "<td>" + (item.processingVendorName || item.processingVendor || "") + "</td>";
|
||||
html += "<td>" + (item.processingDeadline || "") + "</td>";
|
||||
html += "<td>" + (item.grindingDeadline || "") + "</td>";
|
||||
html += "<td>" + (item.orderQty || "") + "</td>";
|
||||
@@ -755,7 +793,7 @@ function oldGenerateUpdateHistoryTable(beforeData, afterData) {
|
||||
html += "<td" + (changedFields['rawMaterialSize'] ? " class='field-changed'" : "") + ">" + (mod.after.rawMaterialSize || "") + "</td>";
|
||||
html += "<td" + (changedFields['rawMaterialPartNo'] ? " class='field-changed'" : "") + ">" + (mod.after.rawMaterialPartNo || "") + "</td>";
|
||||
html += "<td" + (changedFields['requiredQty'] ? " class='field-changed'" : "") + ">" + (mod.after.requiredQty || "") + "</td>";
|
||||
html += "<td" + (changedFields['processingVendor'] ? " class='field-changed'" : "") + ">" + (mod.after.processingVendor || "") + "</td>";
|
||||
html += "<td" + (changedFields['processingVendor'] ? " class='field-changed'" : "") + ">" + (mod.after.processingVendorName || mod.after.processingVendor || "") + "</td>";
|
||||
html += "<td" + (changedFields['processingDeadline'] ? " class='field-changed'" : "") + ">" + (mod.after.processingDeadline || "") + "</td>";
|
||||
html += "<td" + (changedFields['grindingDeadline'] ? " class='field-changed'" : "") + ">" + (mod.after.grindingDeadline || "") + "</td>";
|
||||
html += "<td" + (changedFields['orderQty'] ? " class='field-changed'" : "") + ">" + (mod.after.orderQty || "") + "</td>";
|
||||
|
||||
@@ -137,11 +137,11 @@ function fn_loadSupplyVendorList() {
|
||||
dataType: 'json',
|
||||
success: function(data) {
|
||||
if(data && data.length > 0) {
|
||||
// {id: CODE_NAME, text: CODE_NAME} 형태로 변환 (Select2용)
|
||||
// {id: CODE_ID(OBJID), text: NAME(CLIENT_NM)} 형태로 변환
|
||||
supplyVendorList = data.map(function(item) {
|
||||
return {
|
||||
id: item.CODE_NAME,
|
||||
text: item.CODE_NAME
|
||||
id: item.CODE_ID,
|
||||
text: item.NAME
|
||||
};
|
||||
});
|
||||
console.log("가공업체 목록 로드 완료:", supplyVendorList.length + "개");
|
||||
@@ -172,13 +172,13 @@ function createSelect2Editor(options) {
|
||||
options.forEach(function(opt) {
|
||||
var option = document.createElement("option");
|
||||
if(typeof opt === 'object') {
|
||||
option.value = opt.id || opt.value || opt;
|
||||
option.text = opt.text || opt.label || opt;
|
||||
option.value = opt.id || opt.value || '';
|
||||
option.text = opt.text || opt.label || '';
|
||||
} else {
|
||||
option.value = opt;
|
||||
option.text = opt;
|
||||
}
|
||||
if(option.value === cellValue) {
|
||||
if(option.value == cellValue) {
|
||||
option.selected = true;
|
||||
}
|
||||
select.appendChild(option);
|
||||
@@ -192,7 +192,13 @@ function createSelect2Editor(options) {
|
||||
dropdownAutoWidth: true,
|
||||
placeholder: '선택',
|
||||
allowClear: true,
|
||||
dropdownParent: $('body') // 드롭다운이 셀 밖으로 나오도록
|
||||
dropdownParent: $('body'), // 드롭다운이 셀 밖으로 나오도록
|
||||
templateResult: function(data) {
|
||||
return data.text;
|
||||
},
|
||||
templateSelection: function(data) {
|
||||
return data.text;
|
||||
}
|
||||
});
|
||||
|
||||
$(select).on('select2:select select2:clear', function(e) {
|
||||
@@ -647,6 +653,23 @@ function fn_initGrid() {
|
||||
editor: function(cell, onRendered, success, cancel, editorParams) {
|
||||
// 가공업체 목록 Select2 에디터
|
||||
return createSelect2Editor(supplyVendorList)(cell, onRendered, success, cancel, editorParams);
|
||||
},
|
||||
formatter: function(cell) {
|
||||
var value = cell.getValue();
|
||||
|
||||
// 저장된 값이 없으면 기본값 '5001'(RPS) 설정
|
||||
if(value === undefined || value === null || value === '') {
|
||||
value = '5001';
|
||||
cell.getRow().update({PROCESSING_VENDOR: value}, false);
|
||||
}
|
||||
|
||||
// OBJID로 업체명 조회하여 표시
|
||||
for(var i = 0; i < supplyVendorList.length; i++) {
|
||||
if(supplyVendorList[i].id == value) {
|
||||
return supplyVendorList[i].text;
|
||||
}
|
||||
}
|
||||
return value;
|
||||
}
|
||||
},
|
||||
/* 주석처리: 가공납기, 연삭납기 컬럼
|
||||
|
||||
@@ -3960,48 +3960,50 @@
|
||||
<!-- M-BOM 상세 리스트 조회 (이력용) -->
|
||||
<select id="getMbomDetailList" parameterType="map" resultType="com.pms.common.UpperKeyMap">
|
||||
SELECT
|
||||
OBJID,
|
||||
MBOM_HEADER_OBJID,
|
||||
PARENT_OBJID,
|
||||
CHILD_OBJID,
|
||||
SEQ,
|
||||
LEVEL,
|
||||
PART_OBJID,
|
||||
PART_NO,
|
||||
PART_NAME,
|
||||
QTY,
|
||||
UNIT,
|
||||
SUPPLY_TYPE,
|
||||
MAKE_OR_BUY,
|
||||
RAW_MATERIAL_PART_NO,
|
||||
RAW_MATERIAL_SPEC,
|
||||
RAW_MATERIAL,
|
||||
RAW_MATERIAL_SIZE,
|
||||
PROCESSING_VENDOR,
|
||||
PROCESSING_DEADLINE,
|
||||
GRINDING_DEADLINE,
|
||||
REQUIRED_QTY,
|
||||
ORDER_QTY,
|
||||
PRODUCTION_QTY,
|
||||
STOCK_QTY,
|
||||
SHORTAGE_QTY,
|
||||
NET_QTY,
|
||||
PO_QTY,
|
||||
VENDOR,
|
||||
UNIT_PRICE,
|
||||
TOTAL_PRICE,
|
||||
CURRENCY,
|
||||
LEAD_TIME,
|
||||
MIN_ORDER_QTY,
|
||||
PROPOSAL_DATE,
|
||||
STATUS,
|
||||
REMARK
|
||||
MD.OBJID,
|
||||
MD.MBOM_HEADER_OBJID,
|
||||
MD.PARENT_OBJID,
|
||||
MD.CHILD_OBJID,
|
||||
MD.SEQ,
|
||||
MD.LEVEL,
|
||||
MD.PART_OBJID,
|
||||
MD.PART_NO,
|
||||
MD.PART_NAME,
|
||||
MD.QTY,
|
||||
MD.UNIT,
|
||||
MD.SUPPLY_TYPE,
|
||||
MD.MAKE_OR_BUY,
|
||||
MD.RAW_MATERIAL_PART_NO,
|
||||
MD.RAW_MATERIAL_SPEC,
|
||||
MD.RAW_MATERIAL,
|
||||
MD.RAW_MATERIAL_SIZE,
|
||||
MD.PROCESSING_VENDOR,
|
||||
COALESCE(CM.CLIENT_NM, MD.PROCESSING_VENDOR) AS PROCESSING_VENDOR_NAME,
|
||||
MD.PROCESSING_DEADLINE,
|
||||
MD.GRINDING_DEADLINE,
|
||||
MD.REQUIRED_QTY,
|
||||
MD.ORDER_QTY,
|
||||
MD.PRODUCTION_QTY,
|
||||
MD.STOCK_QTY,
|
||||
MD.SHORTAGE_QTY,
|
||||
MD.NET_QTY,
|
||||
MD.PO_QTY,
|
||||
MD.VENDOR,
|
||||
MD.UNIT_PRICE,
|
||||
MD.TOTAL_PRICE,
|
||||
MD.CURRENCY,
|
||||
MD.LEAD_TIME,
|
||||
MD.MIN_ORDER_QTY,
|
||||
MD.PROPOSAL_DATE,
|
||||
MD.STATUS,
|
||||
MD.REMARK
|
||||
FROM
|
||||
MBOM_DETAIL
|
||||
MBOM_DETAIL MD
|
||||
LEFT JOIN CLIENT_MNG CM ON MD.PROCESSING_VENDOR = CM.OBJID::VARCHAR
|
||||
WHERE
|
||||
MBOM_HEADER_OBJID = #{mbomHeaderObjid}
|
||||
AND STATUS = 'ACTIVE'
|
||||
ORDER BY SEQ
|
||||
MD.MBOM_HEADER_OBJID = #{mbomHeaderObjid}
|
||||
AND MD.STATUS = 'ACTIVE'
|
||||
ORDER BY MD.SEQ
|
||||
</select>
|
||||
|
||||
<!-- 저장된 M-BOM 트리 조회 (MBOM_DETAIL 테이블) -->
|
||||
|
||||
Reference in New Issue
Block a user