162 lines
4.7 KiB
TypeScript
162 lines
4.7 KiB
TypeScript
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 }; |