- 사업유형 SelectArray에 ‘AAAAA‘ 항목 빼고 '전체' 항목 추가 - 하수관로, 맨홀에도 '전체' 항목 추가 - 맨홀에서 용도 조회 조건이 적용 안되는 에러 수정 - 맨홀 조회 결과 컬럼에서 '재질'을 '용도'로 변경
155 lines
4.4 KiB
TypeScript
155 lines
4.4 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;
|
|
}
|
|
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 }; |