import { MS_SWAGE_PPL_USE_CODES, MS_SWAGE_PPL_CODES, MS_SWAGE_MHL_CODES, MS_SWAGE_MHL_USE_CODES, DRTW_SEWAGE_PUMP_USE_CODES } from './table'; interface CodeMapperProps { layerName: string; data: any; } /** * 레이어별 코드 변환 함수 * @param layerName - 레이어 이름 * @param data - 변환할 데이터 객체 * @returns 변환된 데이터 객체 */ export const codeMapper = ({ layerName, data }: CodeMapperProps): any => { if (!data) return data; const processedData = { ...data }; switch (layerName) { case '하수관로': // usg_cd 값 변환 (용도코드) if (processedData.usg_cd) { const usageCodeItem = MS_SWAGE_PPL_USE_CODES.find( code => code.val === processedData.usg_cd.trim() ); if (usageCodeItem) { processedData.usg_cd = usageCodeItem.text; } } // mqlt_cd 값 변환 (재질코드) if (processedData.mqlt_cd) { const materialCodeItem = MS_SWAGE_PPL_CODES.find( code => code.val === processedData.mqlt_cd.trim() ); if (materialCodeItem) { processedData.mqlt_cd = materialCodeItem.text; } } break; case '하수맨홀': // usg_cd 값 변환 (용도코드) if (processedData.usg_cd) { const usageCodeItem = MS_SWAGE_MHL_USE_CODES.find( code => code.val.trim() === processedData.usg_cd.trim() ); if (usageCodeItem) { processedData.usg_cd = usageCodeItem.text; } } // mqlt_cd 값 변환 (재질코드) if (processedData.mqlt_cd) { const materialCodeItem = MS_SWAGE_MHL_CODES.find( code => code.val === processedData.mqlt_cd.trim() ); if (materialCodeItem) { processedData.mqlt_cd = materialCodeItem.text; } } break; case '하수펌프장': // usg_cd 값 변환 (용도코드) if (processedData.usg_cd) { const usageCodeItem = DRTW_SEWAGE_PUMP_USE_CODES.find( code => code.val === processedData.usg_cd.trim() ); if (usageCodeItem) { processedData.usg_cd = usageCodeItem.text; } } break; case '우수토실': // prrtymngYn 값 변환 (중점여부) if (processedData.prrtymngYn) { if (processedData.prrtymngYn === 'Y') { processedData.prrtymngYn = '중점우수토실'; } else if (processedData.prrtymngYn === 'N') { processedData.prrtymngYn = '우수토실'; } } break; case '중점우수토실': if (processedData.manage_no) { processedData.mqlt_cd = processedData.manage_no; } if (processedData.mesure_spot_se) { const mesureSpotSe = [{ id: '0', text: '합류식' }, { id: '1', text: '분류식' }]; const mesureSpotSeItem = mesureSpotSe.find( code => code.id === processedData.mesure_spot_se.trim() ); if (mesureSpotSeItem) processedData.mesure_spot_se = mesureSpotSeItem.text; } break; default: // 다른 레이어는 변환하지 않음 break; } return processedData; }; /** * 저장 시 코드 역변환 함수 (한글 → 코드) * @param layerName - 레이어 이름 * @param data - 역변환할 데이터 객체 * @returns 역변환된 데이터 객체 */ export const reverseCodeMapper = ({ layerName, data }: CodeMapperProps): any => { if (!data) return data; const processedData = { ...data }; switch (layerName) { case '하수맨홀': // mqlt_cd 값 역변환 (텍스트 → 코드) if (processedData.mqlt_cd && typeof processedData.mqlt_cd === 'string') { const materialCodeItem = MS_SWAGE_MHL_CODES.find( code => code.text === processedData.mqlt_cd.trim() ); if (materialCodeItem) { processedData.mqlt_cd = materialCodeItem.val; } } break; case '우수토실': // prrtymngYn 값 역변환 (텍스트 → Y/N) if (processedData.prrtymngYn) { if (processedData.prrtymngYn === '중점우수토실') { processedData.prrtymngYn = 'Y'; } else if (processedData.prrtymngYn === '우수토실') { processedData.prrtymngYn = 'N'; } } break; case '하수펌프장': // usg_cd 값 역변환 (텍스트 → 코드) if (processedData.usg_cd && typeof processedData.usg_cd === 'string') { const usageCodeItem = DRTW_SEWAGE_PUMP_USE_CODES.find( code => code.text === processedData.usg_cd.trim() ); if (usageCodeItem) { processedData.usg_cd = usageCodeItem.val; } } break; default: break; } return processedData; }; // 기본 내보내기 export default { codeMapper, reverseCodeMapper };