diff --git a/apps/wr/app/layout.tsx b/apps/wr/app/layout.tsx index 17945be51..719717344 100644 --- a/apps/wr/app/layout.tsx +++ b/apps/wr/app/layout.tsx @@ -6,6 +6,7 @@ import koBase from "../public/locales/ko/message.json"; import { StoreProvider } from "./store"; import { LoginApi } from "@/src/entities/auth"; import { useEffect } from "react"; +import { getCommonUpCd } from "./store/common/code/basicCode"; export default function RootLayout({ children, @@ -25,6 +26,9 @@ export default function RootLayout({ useEffect(() => { // 렌더 중이 아니라 클라이언트에서만 실행 + 에러 캐치 void LoginApi.login({ userId: "CLEANWATER", password: "gktneh12!@" }) + .finally(()=>{ + getCommonUpCd() + } ) .catch((e) => { console.error("Auto login failed:", e); }); diff --git a/apps/wr/app/store/common/code/basicCode.tsx b/apps/wr/app/store/common/code/basicCode.tsx index 5fc13c16d..5039dd234 100644 --- a/apps/wr/app/store/common/code/basicCode.tsx +++ b/apps/wr/app/store/common/code/basicCode.tsx @@ -1,8 +1,10 @@ +import { fetchType, getFetchWithCount } from "@/components/lib/api"; import type { SelectDataType } from "@common/business_components"; export const numSize = 12; export const txtSize = 20; +export const lwCds: Record = {}; export const yn: SelectDataType[] = [ { val: "Y", text: "Y" }, { val: "N", text: "N" }, @@ -14,29 +16,35 @@ export const bdstFilterYn: SelectDataType[] = [ { val: "F", text: "미가동" }, ]; // 최우수(그린1)/우수(그린2), 우량(그린3), 일반(그린4), 확인불가 체크 -export const bdstGrntchClass: SelectDataType[] = [ - { val: "최우수(그린1)", text: "최우수(그린1)" }, - { val: "우수(그린2)", text: "우수(그린2)" }, - { val: "우량(그린3)", text: "우량(그린3)" }, - { val: "일반(그린4)", text: "일반(그린4)" }, - { val: "확인불가", text: "확인불가" }, -]; +//export const bdstGrntchClass: SelectDataType[] = lwCds['bdstGrntchClass']??[] + +// [ +// { val: "최우수(그린1)", text: "최우수(그린1)" }, +// { val: "우수(그린2)", text: "우수(그린2)" }, +// { val: "우량(그린3)", text: "우량(그린3)" }, +// { val: "일반(그린4)", text: "일반(그린4)" }, +// { val: "확인불가", text: "확인불가" }, +// ]; export const bdstIncenYn: SelectDataType[] = [ { val: "Y", text: "Y" }, { val: "N", text: "N" }, { val: "D", text: "확인불가" }, ]; //처리장연계/자체+연계/자체처리 -export const erctUswtrPrcsMeth: SelectDataType[] = [ - { val: "처리장연계", text: "처리장연계" }, - { val: "자체+연계", text: "자체+연계" }, - { val: "자체처리", text: "자체처리" }, -]; +//export const erctUswtrPrcsMeth: SelectDataType[] = lwCds['erctUswtrPrcsMeth']??[] -export const rusePrcsMthdCd: SelectDataType[] = [ - { val: "물리학적처리", text: "물리학적처리" }, - { val: "생물학적처리", text: "생물학적처리" }, -]; +// [ +// { val: "처리장연계", text: "처리장연계" }, +// { val: "자체+연계", text: "자체+연계" }, +// { val: "자체처리", text: "자체처리" }, +// ]; + +// export const rusePrcsMthdCd: SelectDataType[] = lwCds['rusePrcsMthdCd']??[] + +// [ +// { val: "물리학적처리", text: "물리학적처리" }, +// { val: "생물학적처리", text: "생물학적처리" }, +// ]; export const ruseSeCd: SelectDataType[] = [ { val: "신규", text: "신규" }, @@ -46,101 +54,107 @@ export const ruseSeCd: SelectDataType[] = [ { val: "개량", text: "개량" }, ]; -export const ruseBizMthdCd: SelectDataType[] = [ - { val: "재정", text: "재정" }, - { val: "민간투자", text: "민간투자" }, - { val: "자체", text: "자체" }, -]; +// export const ruseBizMthdCd: SelectDataType[] = [ +// { val: "재정", text: "재정" }, +// { val: "민간투자", text: "민간투자" }, +// { val: "자체", text: "자체" }, +// ]; // 공통 건축물 용도 -export const bdstUsgCd: SelectDataType[] = [ - { val: "-1", text: "확인불가" }, - { val: "1", text: "운동장" }, - { val: "2", text: "체육관" }, - { val: "3", text: "공공업무시설" }, - { val: "4", text: "공공기관의청사" }, - { val: "5", text: "아파트" }, - { val: "6", text: "연립주택" }, - { val: "7", text: "다세대주택" }, - { val: "8", text: "기숙사" }, - { val: "9", text: "초등학교" }, - { val: "10", text: "중학교" }, - { val: "11", text: "고등학교" }, - { val: "12", text: "전문대학" }, - { val: "13", text: "대학및대학교" }, - { val: "14", text: "골프장" }, - { val: "15", text: "대규모점포" }, - { val: "16", text: "기타" }, - { val: "17", text: "숙박업" }, - { val: "18", text: "목욕장업" }, - { val: "19", text: "공장" }, - { val: "20", text: "발전시설" }, - { val: "21", text: "관광단지개발사업" }, - { val: "22", text: "도시개발사업" }, - { val: "23", text: "산업단지개발사업" }, - { val: "24", text: "택지개발사업" }, - { val: "25", text: "대규모점포(대형마트)" }, - { val: "26", text: "대규모점포(전문점)" }, - { val: "27", text: "대규모점포(백화점)" }, - { val: "28", text: "대규모점포(쇼핑센터)" }, - { val: "29", text: "대규모점포(복합쇼핑몰)" }, - { val: "30", text: "물류시설" }, - { val: "31", text: "운수시설(여객자동차터미널)" }, - { val: "32", text: "운수시설(철도시설)" }, - { val: "33", text: "운수시설(공항시설)" }, - { val: "34", text: "운수시설(항만시설)" }, - { val: "35", text: "업무시설(공공업무시설)" }, - { val: "36", text: "업무시설(금융업소)" }, - { val: "37", text: "업무시설(사무소)" }, - { val: "38", text: "업무시설(결혼상담소 등 소개업소)" }, - { val: "39", text: "업무시설(출판사)" }, - { val: "40", text: "업무시설(신문사)" }, - { val: "41", text: "업무시설(오피스텔)" }, - { val: "42", text: "교정시설" }, - { val: "43", text: "방송국" }, - { val: "44", text: "전신전화국" }, - { val: "45", text: "기타" }, -]; +export const bdstUsgCd: SelectDataType[] =lwCds?.bdstUsgCd?.concat(lwCds?.rswtBdstType??[])??[] -export const rswtBdstType: SelectDataType[] = [ - { val: "17", text: "숙박업" }, - { val: "18", text: "목욕장업" }, - { val: "19", text: "공장" }, - { val: "20", text: "발전시설" }, - { val: "21", text: "관광단지개발사업" }, - { val: "22", text: "도시개발사업" }, - { val: "23", text: "산업단지개발사업" }, - { val: "24", text: "택지개발사업" }, - { val: "25", text: "대규모점포(대형마트)" }, - { val: "26", text: "대규모점포(전문점)" }, - { val: "27", text: "대규모점포(백화점)" }, - { val: "28", text: "대규모점포(쇼핑센터)" }, - { val: "29", text: "대규모점포(복합쇼핑몰)" }, - { val: "30", text: "물류시설" }, - { val: "31", text: "운수시설(여객자동차터미널)" }, - { val: "32", text: "운수시설(철도시설)" }, - { val: "33", text: "운수시설(공항시설)" }, - { val: "34", text: "운수시설(항만시설)" }, - { val: "35", text: "업무시설(공공업무시설)" }, - { val: "36", text: "업무시설(금융업소)" }, - { val: "37", text: "업무시설(사무소)" }, - { val: "38", text: "업무시설(결혼상담소 등 소개업소)" }, - { val: "39", text: "업무시설(출판사)" }, - { val: "40", text: "업무시설(신문사)" }, - { val: "41", text: "업무시설(오피스텔)" }, - { val: "42", text: "교정시설" }, - { val: "43", text: "방송국" }, - { val: "44", text: "전신전화국" }, - { val: "45", text: "기타" }, -]; +// [ +// { val: "-1", text: "확인불가" }, +// { val: "1", text: "운동장" }, +// { val: "2", text: "체육관" }, +// { val: "3", text: "공공업무시설" }, +// { val: "4", text: "공공기관의청사" }, +// { val: "5", text: "아파트" }, +// { val: "6", text: "연립주택" }, +// { val: "7", text: "다세대주택" }, +// { val: "8", text: "기숙사" }, +// { val: "9", text: "초등학교" }, +// { val: "10", text: "중학교" }, +// { val: "11", text: "고등학교" }, +// { val: "12", text: "전문대학" }, +// { val: "13", text: "대학및대학교" }, +// { val: "14", text: "골프장" }, +// { val: "15", text: "대규모점포" }, +// { val: "16", text: "기타" }, +// { val: "17", text: "숙박업" }, +// { val: "18", text: "목욕장업" }, +// { val: "19", text: "공장" }, +// { val: "20", text: "발전시설" }, +// { val: "21", text: "관광단지개발사업" }, +// { val: "22", text: "도시개발사업" }, +// { val: "23", text: "산업단지개발사업" }, +// { val: "24", text: "택지개발사업" }, +// { val: "25", text: "대규모점포(대형마트)" }, +// { val: "26", text: "대규모점포(전문점)" }, +// { val: "27", text: "대규모점포(백화점)" }, +// { val: "28", text: "대규모점포(쇼핑센터)" }, +// { val: "29", text: "대규모점포(복합쇼핑몰)" }, +// { val: "30", text: "물류시설" }, +// { val: "31", text: "운수시설(여객자동차터미널)" }, +// { val: "32", text: "운수시설(철도시설)" }, +// { val: "33", text: "운수시설(공항시설)" }, +// { val: "34", text: "운수시설(항만시설)" }, +// { val: "35", text: "업무시설(공공업무시설)" }, +// { val: "36", text: "업무시설(금융업소)" }, +// { val: "37", text: "업무시설(사무소)" }, +// { val: "38", text: "업무시설(결혼상담소 등 소개업소)" }, +// { val: "39", text: "업무시설(출판사)" }, +// { val: "40", text: "업무시설(신문사)" }, +// { val: "41", text: "업무시설(오피스텔)" }, +// { val: "42", text: "교정시설" }, +// { val: "43", text: "방송국" }, +// { val: "44", text: "전신전화국" }, +// { val: "45", text: "기타" }, +// ]; -export const orgwtKndCd = [ - { text: "오수(변기 오수 제외)", val: "01" }, - { text: "오수", val: "02" }, - { text: "폐수", val: "03" }, - { text: "오수 및 폐수", val: "04" }, - { text: "기타", val: "05" }, -]; + export const rswtBdstType: SelectDataType[] = lwCds?.rswtBdstType??[] +//[ +// { val: "17", text: "숙박업" }, +// { val: "18", text: "목욕장업" }, +// { val: "19", text: "공장" }, +// { val: "20", text: "발전시설" }, +// { val: "21", text: "관광단지개발사업" }, +// { val: "22", text: "도시개발사업" }, +// { val: "23", text: "산업단지개발사업" }, +// { val: "24", text: "택지개발사업" }, +// { val: "25", text: "대규모점포(대형마트)" }, +// { val: "26", text: "대규모점포(전문점)" }, +// { val: "27", text: "대규모점포(백화점)" }, +// { val: "28", text: "대규모점포(쇼핑센터)" }, +// { val: "29", text: "대규모점포(복합쇼핑몰)" }, +// { val: "30", text: "물류시설" }, +// { val: "31", text: "운수시설(여객자동차터미널)" }, +// { val: "32", text: "운수시설(철도시설)" }, +// { val: "33", text: "운수시설(공항시설)" }, +// { val: "34", text: "운수시설(항만시설)" }, +// { val: "35", text: "업무시설(공공업무시설)" }, +// { val: "36", text: "업무시설(금융업소)" }, +// { val: "37", text: "업무시설(사무소)" }, +// { val: "38", text: "업무시설(결혼상담소 등 소개업소)" }, +// { val: "39", text: "업무시설(출판사)" }, +// { val: "40", text: "업무시설(신문사)" }, +// { val: "41", text: "업무시설(오피스텔)" }, +// { val: "42", text: "교정시설" }, +// { val: "43", text: "방송국" }, +// { val: "44", text: "전신전화국" }, +// { val: "45", text: "기타" }, +// ]; + +//export const orgwtKndCd =lwCds['orgwtKndCd']??[] + + +// [ +// { text: "오수(변기 오수 제외)", val: "01" }, +// { text: "오수", val: "02" }, +// { text: "폐수", val: "03" }, +// { text: "오수 및 폐수", val: "04" }, +// { text: "기타", val: "05" }, +// ]; export const chBuCd = [ { val: "증축", text: "증축" }, @@ -148,97 +162,104 @@ export const chBuCd = [ { val: "재축", text: "재축" }, ]; -export const dmdUszCd = [ - { val: "조경용수", text: "조경용수" }, - { val: "청소화장실용수", text: "청소화장실용수" }, - { val: "농업용수", text: "농업용수" }, - { val: "공업용수", text: "공업용수" }, - { val: "친수용수", text: "친수용수" }, - { val: "기타", text: "기타" }, -]; +// export const dmdUszCd = [ +// { val: "조경용수", text: "조경용수" }, +// { val: "청소화장실용수", text: "청소화장실용수" }, +// { val: "농업용수", text: "농업용수" }, +// { val: "공업용수", text: "공업용수" }, +// { val: "친수용수", text: "친수용수" }, +// { val: "기타", text: "기타" }, +// ]; -export const ruseMngMtd = [ - { val: "자체운영", text: "자체운영" }, - { val: "공기업", text: "공기업" }, - { val: "민간(대행)", text: "민간(대행)" }, -]; -export const pplQulity = [ - { val: "도복장강관", text: "도복장강관" }, - { val: "PE관", text: "PE관" }, - { val: "스테인레스관", text: "스테인레스관" }, - { val: "덕타일주철관", text: "덕타일주철관" }, - { val: "유리섬유복합관", text: "유리섬유복합관" }, - { val: "기타", text: "기타" }, -]; -export const pplLenght = [ - { val: "D100", text: "D100" }, - { val: "D200", text: "D200" }, - { val: "D250", text: "D250" }, - { val: "D300", text: "D300" }, - { val: "D350", text: "D350" }, - { val: "D400", text: "D400" }, - { val: "D450", text: "D450" }, - { val: "D500", text: "D500" }, - { val: "D700", text: "D700" }, - { val: "D900", text: "D900" }, - { val: "D1000​", text: "D1000​" }, -]; -export const rainFcltCd = [ - { val: "10", text: "확인불가" }, - { val: "01", text: "지붕" }, - { val: "02", text: "건물옥상" }, - { val: "03", text: "골프장 연못" }, - { val: "04", text: "운동장 바닥" }, - { val: "05", text: "운동장 지붕" }, - { val: "06", text: "주차장" }, - { val: "07", text: "태양광패널" }, - { val: "08", text: "연못" }, - { val: "09", text: "기타" }, -]; +// export const ruseMngMtd = lwCds['ruseMngMtd'] +// [ +// { val: "자체운영", text: "자체운영" }, +// { val: "공기업", text: "공기업" }, +// { val: "민간(대행)", text: "민간(대행)" }, +// ]; + +// export const pplQulity = +// [ +// { val: "도복장강관", text: "도복장강관" }, +// { val: "PE관", text: "PE관" }, +// { val: "스테인레스관", text: "스테인레스관" }, +// { val: "덕타일주철관", text: "덕타일주철관" }, +// { val: "유리섬유복합관", text: "유리섬유복합관" }, +// { val: "기타", text: "기타" }, +// ]; +// export const pplLenght = [ +// { val: "D100", text: "D100" }, +// { val: "D200", text: "D200" }, +// { val: "D250", text: "D250" }, +// { val: "D300", text: "D300" }, +// { val: "D350", text: "D350" }, +// { val: "D400", text: "D400" }, +// { val: "D450", text: "D450" }, +// { val: "D500", text: "D500" }, +// { val: "D700", text: "D700" }, +// { val: "D900", text: "D900" }, +// { val: "D1000​", text: "D1000​" }, +// ]; + +// export const rainFcltCd = lwCds?.rainFcltCd??[] + + +// [ +// { val: "10", text: "확인불가" }, +// { val: "01", text: "지붕" }, +// { val: "02", text: "건물옥상" }, +// { val: "03", text: "골프장 연못" }, +// { val: "04", text: "운동장 바닥" }, +// { val: "05", text: "운동장 지붕" }, +// { val: "06", text: "주차장" }, +// { val: "07", text: "태양광패널" }, +// { val: "08", text: "연못" }, +// { val: "09", text: "기타" }, +// ]; //물리화학적처리(스크린, 응집, 침전)/생물학적처리(활성슬러지법 등)/소독(염소, UV 등)/기타 -export const rswtPrscCdMthdCd = [ - { - val: "물리화학적처리(스크린,응집,침전)", - text: "물리화학적처리(스크린,응집,침전)", - }, - { - val: "생물학적처리(활성슬러지법 등)", - text: "생물학적처리(활성슬러지법 등)", - }, - { val: "소독(염소, UV 등)", text: "소독(염소, UV 등)" }, - { val: "기타", text: "기타" }, - { val: "확인불가", text: "확인불가" }, -]; +export const rswtPrscCdMthdCd = lwCds['rswtPrscCdMthdCd']??[] +// { +// val: "물리화학적처리(스크린,응집,침전)", +// text: "물리화학적처리(스크린,응집,침전)", +// }, +// { +// val: "생물학적처리(활성슬러지법 등)", +// text: "생물학적처리(활성슬러지법 등)", +// }, +// { val: "소독(염소, UV 등)", text: "소독(염소, UV 등)" }, +// { val: "기타", text: "기타" }, +// { val: "확인불가", text: "확인불가" }, +// ]; -export const htdPowerMthdCd= [ - { - val: "해당없음", - text: "해당없음", - }, - { - val: "석탄화력발전", - text: "석탄화력발전", - }, - { - val: "화력발전", - text: "화력발전", - }, - { - val: "수력발전", - text: "수력발전", - }, - { - val: "태양관발전", - text: "태양관발전", - }, -]; +// export const htdPowerMthdCd = [ +// { +// val: "해당없음", +// text: "해당없음", +// }, +// { +// val: "석탄화력발전", +// text: "석탄화력발전", +// }, +// { +// val: "화력발전", +// text: "화력발전", +// }, +// { +// val: "수력발전", +// text: "수력발전", +// }, +// { +// val: "태양관발전", +// text: "태양관발전", +// }, +// ]; //(공업용수/양식장/농업용수) -export const htdUtztnUsgCd= [ +export const htdUtztnUsgCd = [ { val: "공업용수", text: "공업용수", @@ -252,3 +273,171 @@ export const htdUtztnUsgCd= [ text: "농업용수", }, ]; + +export const ruseFcltSpot = [] +//(공업용수/양식장/농업용수) +export const rainRswtMng = [ + { + val: "위탁", + text: "01", + }, + { + val: "자체", + text: "02", + }, +]; + +export const rainFcltFlowRate = [ + { + val: "01", + text: "유량계", + }, + { + val: "02", + text: "수위계", + }, + { + val: "03", + text: "펌프적산전력계", + }, + { + val: "04", + text: "기타", + }, +]; +export const rainRswtUse = [ + { + val: "01", + text: "유량계", + }, + { + val: "02", + text: "수위계", + }, + { + val: "03", + text: "펌프적산전력계", + }, + { + val: "04", + text: "기타", + }, +]; + +export const sewageInFcltUse = [ + { + val: "01", + text: "세척수", + }, + { + val: "02", + text: "냉각수", + }, + { + val: "03", + text: "청소수", + }, + { + val: "04", + text: "삭수대", + }, + { + val: "05", + text: "희석용수", + }, + { + val: "06", + text: "중수도", + }, + { + val: "07", + text: "기타", + }, +]; + +export const sewageOutFclttUse = [ + { + val: "01", + text: "청소화장실용수", + }, + { + val: "02", + text: "세척살수용수", + }, + { + val: "03", + text: "조경용수", + }, + { + val: "04", + text: "친수용수", + }, + { + val: "05", + text: "지하수충전", + }, + { + val: "06", + text: "농업용수", + }, + { + val: "07", + text: "하천등유지용수", + }, + { + val: "08", + text: "공업용수", + }, +]; +const codeMApping = { + WR001: "bdstUsgCd", + WR002: "rswtBdstType", + WR003: "rainFcltCd", + WR004: "bdstGrntchClass", + WR005: "rswtPrscCdMthdCd", // 아직 디 못바꿈 + WR006: "orgwtKndCd", //작업 완ㅛ + WR007: "ruseMngMtd", // 작업완료 + WR008: "rusePrcsMthdCd", //w작업완료 + WR009: "erctUswtrPrcsMeth",//w작업완료 + WR010: "ruseFcltSpot",// inout은 yn 만 사용해야 함으로 해당 코드는 사용안함. + WR011: "pplQulity", + WR012: "pplLenght", + WR013: "bdstFilterYn", // 사용 불가 yn만 사용해야함으로 해당코드 사용 안함 + WR014: "rainRswtMng", // 지도점검 등록 시변경 + WR015: "rainFcltFlowRate", //지도점검 등록 시변경 + WR016: "dmdUszCd", // 지도점검 등록 시변경 + WR017: "sewageInFcltUse", //하수재이용 장내 + WR018: "sewageOutFclttUse", // 하수재이용 장외 + WR019: "htdPowerMthdCd", + WR020: "htdUtztnUsgCd", +}; +export const getCommonUpCd = async () => { + const upCd = await getFetchWithCount( + fetchType.LOCAL, + "/cms-service/api/v1/up-codes?keyword=&upCd=&cdSe=&useYn=Y&siteId=WR&page=0&size=100&sort=string" + ); + + const upWrCode: string[] = upCd.content + .filter((item: any) => item.upCd.slice(0, 2) === "WR") + .map((cd: any) => cd.upCd); + + await Promise.all( + upWrCode.map(async (cd) => { + const mapping = codeMApping[cd as keyof typeof codeMApping]; + if (!mapping) return; + + const lwCd = await getFetchWithCount( + fetchType.LOCAL, + `/cms-service/api/v1/lwpo-cds/up-cd/${cd}` + ); + + const list = Array.isArray(lwCd) ? lwCd : lwCd.content ?? []; + + lwCds[mapping] = list.map((it: any) => ({ + text: it.lwpoCdNm, + val: it.lwpoCd, + })); + }) + ); + +}; \ No newline at end of file diff --git a/apps/wr/app/store/common/code/index.ts b/apps/wr/app/store/common/code/index.ts index 72e910aad..822c95ddb 100644 --- a/apps/wr/app/store/common/code/index.ts +++ b/apps/wr/app/store/common/code/index.ts @@ -5,22 +5,10 @@ import type { } from "@common/business_components/ui"; import { bdstFilterYn, - bdstGrntchClass, bdstIncenYn, - bdstUsgCd, chBuCd, - dmdUszCd, - erctUswtrPrcsMeth, - htdPowerMthdCd, - htdUtztnUsgCd, - orgwtKndCd, - pplLenght, - pplQulity, - rainFcltCd, + lwCds, rswtPrscCdMthdCd, - ruseBizMthdCd, - ruseMngMtd, - rusePrcsMthdCd, ruseSeCd, yn, } from "./basicCode"; @@ -151,6 +139,9 @@ export const getEnvPartCd = async (set: any) => { } }; + + + export type comCodeState = { code: { isInit: boolean; @@ -184,6 +175,7 @@ export type comCodeState = { rswtPrscCdMthdCd: SelectDataType[]; htdPowerMthdCd: SelectDataType[]; htdUtztnUsgCd: SelectDataType[]; + rswtBdstType:SelectDataType[]; userSiSggCd: string; }; }; @@ -193,44 +185,45 @@ export type comCodeType = comCodeState & comCodeActions; export const comCodeStateExport: comCodeState = { code: { isInit: false, - rainFcltCd: rainFcltCd, - bdstUsgCd: bdstUsgCd, + rainFcltCd: lwCds['rainFcltCd']??[], + bdstUsgCd: lwCds['bdstUsgCd']??[] , chBuCd: chBuCd, - orgwtKndCd: orgwtKndCd, + orgwtKndCd: lwCds['orgwtKndCd']??[] , cityCd: [], sggCd: [], rvbsnCd: [], mdmbsnCd: [], lgbsnCd: [], lclgvrnmntCd: [], - pplQulity: pplQulity, - pplLenght: pplLenght, + pplQulity: lwCds['pplQulity']??[] , + pplLenght: lwCds['pplLenght']??[] , yn: yn, - dmdUszCd: dmdUszCd, + dmdUszCd: lwCds['dmdUszCd']??[] , buildingType: buildingType, - ruseMngMtd: ruseMngMtd, + ruseMngMtd: lwCds['ruseMngMtd']??[], ruseSeCd: ruseSeCd, - ruseBizMthdCd: ruseBizMthdCd, - rusePrcsMthdCd: rusePrcsMthdCd, - erctUswtrPrcsMeth: erctUswtrPrcsMeth, + ruseBizMthdCd: lwCds['ruseBizMthdCd']??[], + rusePrcsMthdCd: lwCds['rusePrcsMthdCd']??[], + erctUswtrPrcsMeth: lwCds['erctUswtrPrcsMeth']??[], bdstFilterYn: bdstFilterYn, bdstIncenYn: bdstIncenYn, - bdstGrntchClass: bdstGrntchClass, - rswtPrscCdMthdCd: rswtPrscCdMthdCd, - htdPowerMthdCd: htdPowerMthdCd, - htdUtztnUsgCd: htdUtztnUsgCd, + bdstGrntchClass: lwCds['bdstGrntchClass']??[], + rswtPrscCdMthdCd: rswtPrscCdMthdCd, // 공단연락오면 바꿔야함 + htdPowerMthdCd: lwCds['htdPowerMthdCd']??[], + htdUtztnUsgCd: lwCds['htdUtztnUsgCd']??[], userSiSggCd: laeSecd, + rswtBdstType:lwCds['rswtBdstType']??[] , }, }; export type comCodeActions = { returnCodeText: (val: string, codeName: string) => string; + returnTextCode: (text: string, codeName: string) => string; }; export const codeActionExport: (set: any) => comCodeActions = (set: any) => { return { returnCodeText: (val: string, codeName: string) => { - console.log('val', val, 'codeName', codeName); return set((state: comCodeState) => { const codeList = state.code[codeName] || []; const found = codeList.find((item) => item.val === val); @@ -238,5 +231,13 @@ export const codeActionExport: (set: any) => comCodeActions = (set: any) => { } ); }, + returnTextCode: (text: string, codeName: string) => { + return set((state: comCodeState) => { + const codeList = state.code[codeName] || []; + const found = codeList.find((item) => item.text === text); + return found ? found.val : text; + } + ); + }, }; }; diff --git a/apps/wr/app/store/common/code/type.ts b/apps/wr/app/store/common/code/type.ts new file mode 100644 index 000000000..55f684f55 --- /dev/null +++ b/apps/wr/app/store/common/code/type.ts @@ -0,0 +1,31 @@ + +export type LwCdType= { + lwpoCd: string, + upCd: string, + lwpoCdNm:string, + lwpoCdExpln:string, + unit: string, + prntLwpoCd: string, + useYn: string, + sortSeq: number, + regDt: Date, + rgtr: string, + mdfcnDt: Date, + mdfr: string +} + + +export type UPCdType= { + upCd: string, + upCdNm: string, + upCdExpln: string, + cdSe: string, + useYn: string, + delYn: string, + siteId: string, + regDt:Date, + rgtr: string + mdfcnDt: Date, + mdfr: string + +} diff --git a/apps/wr/app/store/prfmncReg/chkgdnReg/rainChkgdn/excel.tsx b/apps/wr/app/store/prfmncReg/chkgdnReg/rainChkgdn/excel.tsx index 38e2cab7f..84619f307 100644 --- a/apps/wr/app/store/prfmncReg/chkgdnReg/rainChkgdn/excel.tsx +++ b/apps/wr/app/store/prfmncReg/chkgdnReg/rainChkgdn/excel.tsx @@ -7,6 +7,7 @@ import { parseRawValue, } from "@/components/lib/func/excelFunc"; import toast from "react-hot-toast"; +import { codeToText, textToCode } from "@/components/lib/func/commom"; export const useTypes = [ "조경용수", "청소화장실용수", @@ -17,17 +18,13 @@ export const useTypes = [ "기타", ]; - -export const chkMngType =[ - '위탁', - '자체' -] -export const chkSpwtPositnType = [ - '유량계', - '수위계', - '펌프적산전력계', - '기타' -] +export const chkMngType = { "01": "위탁", "02": "자체" }; +export const rainFcltFlowRateType = { + "01": "유량계", + "02": "수위계", + "03": "펌프적산전력계", + "04": "기타", +}; export type Buildingtype = { bdstInfoSn: number; @@ -118,7 +115,7 @@ export const excelToRainChkData = (excelData: any, year: string) => { const ruseData = parseRawValue(item[`빗물_${month}월`]); if (month.length < 2) month = "0" + month; return { - utztnUsgCd: item["이용용도"], + utztnUsgCd: textToCode(item["이용용도"], "dmdUszCd") ?? undefined, ym: year + month, chckYmd: checkYmd, splyUswtrUtztnQnt: splyData, @@ -133,14 +130,14 @@ export const excelToRainChkData = (excelData: any, year: string) => { bdstRuseFcltSn: Number(item["NO"]), chckYmd: checkYmd, rgtr: TEST_UUID, - operMngCd: item["운영관리형태"] ?? "", + operMngCd: textToCode(item["운영관리형태"], "rainRswtMng") ??item["운영관리형태"], anlOperCst: parseRawValue(item["연간운영비(원/년)"]), - oilqMeasMthd: item["유량측정방법"] ?? "", + oilqMeasMthd: textToCode( item["유량측정방법"],"rainFcltFlowRate",)??item["유량측정방법"], guideDetails: makeGuidDetail, rainyDetails: [ { ph: item["PH"], - utztnUsgCd: item["이용용도"], + utztnUsgCd: textToCode(item["이용용도"], "dmdUszCd")??item["이용용도"], trbt: parseRawValue(item["탁도"]), grssClfg: parseRawValue(item["총대장균군수"]), etc: item["기타"] || "", // 필드 누락 방지 @@ -156,10 +153,10 @@ export const excelToRainChkData = (excelData: any, year: string) => { }) .filter((el: any) => el !== undefined); -console.log("rainChkgdData", rainChkgdData); + console.log('rainChkgdData ', rainChkgdData) if (rainChkgdData.length > 0) { rainChkgdData.forEach((rain: any) => { - const defaultMessage = `[시설명: ${rain.bdstNm}, 점검일: ${rain.chckYmd}, 이용용도: ${rain.guideDetails[0]?.utztnUsgCd}] 항목에서 `; + const defaultMessage = `[시설명: ${rain.bdstNm}, 점검일: ${rain.chckYmd}, 이용용도: ${codeToText(rain.guideDetails[0]?.utztnUsgCd, "dmdUszCd") ??rain.guideDetails[0]?.utztnUsgCd}] 항목에서 `; if (rain.chckYmd && isInvalidDate(rain.chckYmd)) { issues.push( @@ -173,15 +170,20 @@ console.log("rainChkgdData", rainChkgdData); ); } - if (rain.operMngCd.length > 1 && !chkMngType.includes(rain.operMngCd)) { + if (rain.operMngCd.length > 1 && !chkMngType[rain.operMngCd]) { issues.push( - defaultMessage + `운영관리 형태: 위탁 혹은 자체 만 허용) /입력값:${rain.oilqMeasMthd}` + defaultMessage + + `운영관리 형태: 위탁 혹은 자체 만 허용) /입력값:${rain.operMngCd}` ); } - if (rain.oilqMeasMthd.length > 1 && !chkSpwtPositnType.includes(rain.oilqMeasMthd)) { + if ( + rain.oilqMeasMthd.length > 1 && + !rainFcltFlowRateType[rain.oilqMeasMthd] + ) { issues.push( - defaultMessage + `유량측정방법: 유량계, 수위계, 펌프적산전력계, 기타) /입력값:${rain.oilqMeasMthd}` + defaultMessage + + `유량측정방법: 유량계, 수위계, 펌프적산전력계, 기타) /입력값:${rain.oilqMeasMthd}` ); } @@ -190,11 +192,14 @@ console.log("rainChkgdData", rainChkgdData); issues.push(defaultMessage + `PH: 숫자 형식 아님 /입력값:${key.ph}`); } if (key.trbt?.length > 1 && isInvalidNumber(key.trbt)) { - issues.push(defaultMessage + `탁도: 숫자 형식 아님 /입력값:${key.trbt}`); + issues.push( + defaultMessage + `탁도: 숫자 형식 아님 /입력값:${key.trbt}` + ); } if (key.grssClfg?.length > 1 && isInvalidNumber(key.grssClfg)) { issues.push( - defaultMessage + `총대장균군수: 숫자 형식 아님 /입력값:${key.grssClfg}` + defaultMessage + + `총대장균군수: 숫자 형식 아님 /입력값:${key.grssClfg}` ); } if (key.levyAmt?.length > 1 && isInvalidNumber(key.levyAmt)) { @@ -226,7 +231,7 @@ console.log("rainChkgdData", rainChkgdData); } }); }); - }else{ + } else { toast.error("데이터가 없습니다. 점검 데이터를 확인해주세요."); } diff --git a/apps/wr/app/store/prfmncReg/chkgdnReg/rainChkgdn/headList.tsx b/apps/wr/app/store/prfmncReg/chkgdnReg/rainChkgdn/headList.tsx index 2b03d86df..d2c0bf7d7 100644 --- a/apps/wr/app/store/prfmncReg/chkgdnReg/rainChkgdn/headList.tsx +++ b/apps/wr/app/store/prfmncReg/chkgdnReg/rainChkgdn/headList.tsx @@ -87,6 +87,7 @@ export type chHeadType = { export type splRuseWaterType = { utztnUsgCd: string; + utztnUsgCdText: string; splTotal: number; spl01: number; spl02: number; @@ -141,12 +142,12 @@ export const rainChkgdnHeadListExport: TableUpperProps[] = [ { id: "cityText", title: "시도", mergeCell: true }, { id: "sggText", title: "시군구", mergeCell: true }, { id: "bdstNm", title: "시설명", mergeCell: true }, - { id: "operMngCd", title: "운영관리형태", mergeCell: true }, - { id: "oilqMeasMthd", title: "유량측정방법", mergeCell: true }, + { id: "operMngCdText", title: "운영관리형태", mergeCell: true }, + { id: "oilqMeasMthdText", title: "유량측정방법", mergeCell: true }, { id: "anlOperCst", title: "연간운영비(원/년)", mergeCell: true }, { id: "dtfcltCpct", title: "빗물저류조용량(m³)", mergeCell: true }, { id: "chckYmd", title: "점검일", mergeCell: true }, - { id: "utztnUsgCd", title: "이용용도" }, + { id: "utztnUsgCdText", title: "이용용도" }, { id: "totalSplyUswtrUtztnQnt", title: "연간대체수이용량(m³)" }, { id: "totalRuseFcltUtztnQnt", title: "연간빗물이용량(m³)" }, { @@ -201,7 +202,7 @@ export const rainChkgdnHeadListExport: TableUpperProps[] = [ ]; export const ruseHeadListExport: TableUpperProps[] = [ - { id: "utztnUsgCd", title: "이용용도" }, + { id: "utztnUsgCdText", title: "이용용도" }, { id: "ruseTotal", title: "계", upName: "ruseWater", upSequnce: 1 }, { id: "ruse01", title: "1월", upName: "ruseWater", upSequnce: 2 , edit: true }, { id: "ruse02", title: "2월", upName: "ruseWater", upSequnce: 3 , edit: true }, @@ -218,7 +219,7 @@ export const ruseHeadListExport: TableUpperProps[] = [ ]; export const splHeadListExport: TableUpperProps[] = [ - { id: "utztnUsgCd", title: "이용용도" }, + { id: "utztnUsgCdText", title: "이용용도" }, { id: "splTotal", title: "계", upName: "splWater", upSequnce: 1}, { id: "spl01", title: "1월", upName: "splWater", upSequnce: 2, edit: true }, { id: "spl02", title: "2월", upName: "splWater", upSequnce: 3, edit: true }, diff --git a/apps/wr/app/store/prfmncReg/chkgdnReg/rswrtChkgdn/excel.tsx b/apps/wr/app/store/prfmncReg/chkgdnReg/rswrtChkgdn/excel.tsx index a3372639b..5edba24b5 100644 --- a/apps/wr/app/store/prfmncReg/chkgdnReg/rswrtChkgdn/excel.tsx +++ b/apps/wr/app/store/prfmncReg/chkgdnReg/rswrtChkgdn/excel.tsx @@ -11,6 +11,7 @@ import { useTypes, type Buildingtype } from "../rainChkgdn/excel"; +import { codeToText, textToCode } from "@/components/lib/func/commom"; export const rswtMakeExcelSample = ( buildings: Buildingtype[], @@ -158,12 +159,12 @@ export const excelToRswtGuideData = ( if (checkYmd.length > 7) { return { bdstRuseFcltSn: Number(item["NO"]), - operMngCd: item["운영관리형태"], + operMngCd: textToCode(item["운영관리형태"], "rainRswtMng") ??item["운영관리형태"], anlOperCst: parseCommaRawValue(item["연간운영비(원/년)"]), prcsCpct: parseRawValue(item[`처리용량(m³)`]), spwtPositn: item["채수지점"], chckYmd: checkYmd, - utztnUsgCd: item["이용용도"], + utztnUsgCd: textToCode(item["이용용도"], "dmdUszCd")??item["이용용도"], guideDetails: makeGuidDetail, rgtr: TEST_UUID, mdfr: TEST_UUID, @@ -226,7 +227,7 @@ export const excelToRswtPolution = (excelData: any) => { return { bdstRuseFcltSn: Number(item["NO"]), chckYmd: checkYmd, - utztnUsgCd: item["이용용도"], + utztnUsgCd: textToCode(item["이용용도"], "dmdUszCd")??item["이용용도"], operMngCd: item["운영관리형태"], anlOperCst: parseCommaRawValue(item["연간운영비(원/년)"]), prcsCpct: parseRawValue(item["처리용량(m³)"]), @@ -236,7 +237,7 @@ export const excelToRswtPolution = (excelData: any) => { mdfr: TEST_UUID, rswtrDetails: [ { - utztnUsgCd: item["이용용도"], + utztnUsgCd: textToCode(item["이용용도"], "dmdUszCd")??item["이용용도"], vltnDt: vltnDt, vltnMttr: item["위반사항"], levyAmt: Number(item["과태료 부과금액(천원)"]) ?? 0, @@ -248,13 +249,6 @@ export const excelToRswtPolution = (excelData: any) => { } }) .filter((el: any) => el !== undefined); - // if (rswtChkgdData.length > 0) { - // rswtExcelDataCheck(rswtChkgdData, issues); - // } - - // if (issues.length > 0) { - // return { data: [], issues }; - // } return rswtChkgdData }; @@ -265,7 +259,7 @@ export const rswtExcelDataCheck = ( ) => { rswtChkgdData.forEach((rswt: any) => { - const defaultMessage = `*중수도 수질 [NO: ${rswt.bdstRuseFcltSn}, 점검일: ${rswt.chckYmd}, 이용용도: ${rswt.utztnUsgCd}] 항목에서 `; + const defaultMessage = `*중수도 수질 [NO: ${rswt.bdstRuseFcltSn}, 점검일: ${rswt.chckYmd}, 이용용도: ${codeToText(rswt.utztnUsgCd ,"dmdUszCd")??rswt.utztnUsgCd}] 항목에서 `; if (rswt.chckYmd && isInvalidDate(rswt.chckYmd)) { issues.push(defaultMessage + `점검일: 날짜 형식 아님 (${rswt.chckYmd})`); @@ -284,7 +278,7 @@ export const rswtExcelDataCheck = ( } // if ( // rswt.spwtPositn.length > 1 && - // !chkSpwtPositnType.includes(rswt.spwtPositn) + // !rainFcltFlowRateType[rswt.spwtPositn] // ) { // issues.push( // defaultMessage + diff --git a/apps/wr/app/store/prfmncReg/chkgdnReg/rswrtChkgdn/headList.tsx b/apps/wr/app/store/prfmncReg/chkgdnReg/rswrtChkgdn/headList.tsx index 56ee59197..652e0fea7 100644 --- a/apps/wr/app/store/prfmncReg/chkgdnReg/rswrtChkgdn/headList.tsx +++ b/apps/wr/app/store/prfmncReg/chkgdnReg/rswrtChkgdn/headList.tsx @@ -53,6 +53,7 @@ const buildingZod = z.object({ }); export const rswtrPolutionsZode = z.object({ + utztnUsgCdText:z.string().nullish(), chkgdnDtlFk: z.string().nullish(), utztnUsgCd: z.string().nullish(), node: z.string().nullish(), @@ -143,7 +144,7 @@ export const rswtChkHeadListExport: TableUpperProps[] = [ { id: "prcsCpct", title: "처리용량(m³)" ,mergeCell: true}, { id: "spwtPositn", title: "채수지점" ,mergeCell: true}, { id: "chckYmd", title: "점검일" ,mergeCell: true}, - { id: "utztnUsgCd", title: "이용용도" }, + { id: "utztnUsgCdText", title: "이용용도" }, { id: "splyUswtrUtztnQnt", title: "연간대체수이용량(m³)" ,type: "number"}, { id: "ruseFcltUtztnQnt", title: "연간중수도이용량(m³)",type: "number"}, @@ -197,7 +198,7 @@ export const rswtChkHeadListExport: TableUpperProps[] = [ export const rswtDetailHeadListExport: TableUpperProps[] = [ - { id: "utztnUsgCd", title: "이용용도" }, + { id: "utztnUsgCdText", title: "이용용도" }, { id: "grssClfgUswtr", diff --git a/apps/wr/app/store/prfmncSttn/chkgdnSttn/rainChkgdnSttn/headList.tsx b/apps/wr/app/store/prfmncSttn/chkgdnSttn/rainChkgdnSttn/headList.tsx index bfd2838d0..0d995fbe3 100644 --- a/apps/wr/app/store/prfmncSttn/chkgdnSttn/rainChkgdnSttn/headList.tsx +++ b/apps/wr/app/store/prfmncSttn/chkgdnSttn/rainChkgdnSttn/headList.tsx @@ -5,12 +5,12 @@ export const rainChkgdnHeadSttnExport: TableUpperProps[] = [ { id: "cityText", title: "시도", mergeCell: true }, { id: "sggText", title: "시군구", mergeCell: true }, { id: "bdstNm", title: "시설명", mergeCell: true }, - { id: "operMngCd", title: "운영관리형태", mergeCell: true }, - { id: "oilqMeasMthd", title: "유량측정방법", mergeCell: true }, + { id: "operMngCdText", title: "운영관리형태", mergeCell: true }, + { id: "oilqMeasMthdText", title: "유량측정방법", mergeCell: true }, { id: "anlOperCst", title: "연간운영비(원/년)", mergeCell: true }, { id: "dtfcltCpct", title: "빗물저류조용량(m³)", mergeCell: true }, { id: "chckYmd", title: "점검일", mergeCell: true }, - { id: "utztnUsgCd", title: "이용용도" }, + { id: "utztnUsgCdText", title: "이용용도" }, { id: "totalSplyUswtrUtztnQnt", title: "연간대체수이용량(m³)" }, { id: "totalRuseFcltUtztnQnt", title: "연간빗물이용량(m³)" }, { @@ -59,7 +59,7 @@ export const rainChkgdnHeadSttnExport: TableUpperProps[] = [ ]; export const ruseSttnHeadListExport: TableUpperProps[] = [ - { id: "utztnUsgCd", title: "이용용도" }, + { id: "utztnUsgCdText", title: "이용용도" }, { id: "ruseTotal", title: "계", upName: "ruseWater", upSequnce: 1 }, { id: "ruse01", title: "1월", upName: "ruseWater", upSequnce: 2 }, { id: "ruse02", title: "2월", upName: "ruseWater", upSequnce: 3 }, @@ -76,7 +76,7 @@ export const ruseSttnHeadListExport: TableUpperProps[] = [ ]; export const splSttnHeadListExport: TableUpperProps[] = [ - { id: "utztnUsgCd", title: "이용용도" }, + { id: "utztnUsgCdText", title: "이용용도" }, { id: "splTotal", title: "계", upName: "splWater", upSequnce: 1 }, { id: "spl01", title: "1월", upName: "splWater", upSequnce: 2 }, { id: "spl02", title: "2월", upName: "splWater", upSequnce: 3 }, @@ -108,7 +108,7 @@ export const splSttnHeadListExport: TableUpperProps[] = [ ]; export const rswtDetailHeadListExport: TableUpperProps[] = [ - { id: "utztnUsgCd", title: "이용용도" }, + { id: "utztnUsgCdText", title: "이용용도" }, { id: "grssClfgUswtr", diff --git a/apps/wr/app/store/prfmncSttn/chkgdnSttn/rswtChkgdnSttn/headList.tsx b/apps/wr/app/store/prfmncSttn/chkgdnSttn/rswtChkgdnSttn/headList.tsx index 382396566..eb4d70781 100644 --- a/apps/wr/app/store/prfmncSttn/chkgdnSttn/rswtChkgdnSttn/headList.tsx +++ b/apps/wr/app/store/prfmncSttn/chkgdnSttn/rswtChkgdnSttn/headList.tsx @@ -10,7 +10,7 @@ export const rswtChkSttnHeadListExport: TableUpperProps[] = [ { id: "prcsCpct", title: "처리용량(m³)", mergeCell: true }, { id: "spwtPositn", title: "채수지점", mergeCell: true }, { id: "chckYmd", title: "점검일", mergeCell: true }, - { id: "utztnUsgCd", title: "이용용도" }, + { id: "utztnUsgCdText", title: "이용용도" }, { id: "splyUswtrUtztnQnt", title: "연간보급수이용량(m³)", type: "number" }, { id: "ruseFcltUtztnQnt", title: "연간중수도이용량(m³)", type: "number" }, diff --git a/apps/wr/app/store/store.tsx b/apps/wr/app/store/store.tsx index e19ec2216..6381b1b2a 100644 --- a/apps/wr/app/store/store.tsx +++ b/apps/wr/app/store/store.tsx @@ -341,6 +341,7 @@ export const StoreZus = ( getMiddleRegionCd(set); getUnitWaterShedCd(set); getEnvPartCd(set); + return { ...initState, ...comFcltSearchAction(set), diff --git a/apps/wr/components/lib/func/TableData.tsx b/apps/wr/components/lib/func/TableData.tsx index bee5e093d..1a66802f5 100644 --- a/apps/wr/components/lib/func/TableData.tsx +++ b/apps/wr/components/lib/func/TableData.tsx @@ -10,6 +10,7 @@ import { } from "@common/components/ui"; import moment from "moment"; import { + codeToText, formatCommaNumber, formatYyyymmdd, handleCommaNumberChange @@ -73,23 +74,23 @@ export const rswtChkTableData = (chkData: rswtChkZodType[]) => { let flatRswtChk = {}; const findGuide = root.guideDetails.find( (guide) => guide.utztnUsgCd === detail.utztnUsgCd - ); + ) const findPoluttion = root.rswtrPollutions.find( (polution) => polution.utztnUsgCd === detail.utztnUsgCd ); - const operMngCd = root?.reuseBuilding.operMngCd; flatRswtChk = { ...root, ...detail, ...findGuide, ...findPoluttion, ...flatRswtChk, - operMngCd: operMngCd, + utztnUsgCdText: codeToText(detail.utztnUsgCd, 'dmdUszCd'), }; makeRswtData.push(flatRswtChk); }); }); } + return makeRswtData; }; diff --git a/apps/wr/components/lib/func/commom.tsx b/apps/wr/components/lib/func/commom.tsx index 042e74aa6..144aace66 100644 --- a/apps/wr/components/lib/func/commom.tsx +++ b/apps/wr/components/lib/func/commom.tsx @@ -1,4 +1,5 @@ import type { comCodeState } from "@/app/store/common/code"; +import { lwCds } from "@/app/store/common/code/basicCode"; import { filePickedBlob, filePickedBlobArray, @@ -296,4 +297,23 @@ export const formatArchArea =(value: string, digits: number=0 ) => { // 다시 천 단위 콤마 찍어서 반환 return Number(rounded).toLocaleString(); +} + + +export const codeToText = ( val:string, codeName:string ) =>{ + + if(val===''|| val===undefined){ + return '' + } + + return lwCds[codeName]?.find((cd) => cd.val ===val)?.text +} + +export const textToCode = (text:string, codeName:string) =>{ + if(text===''|| text===undefined){ + return '' + } + + return lwCds[codeName]?.find((cd) => cd.text ===text)?.val + } \ No newline at end of file diff --git a/apps/wr/components/ui/modal/chkgd/chkgdModal/chkgdModal.tsx b/apps/wr/components/ui/modal/chkgd/chkgdModal/chkgdModal.tsx index c528f5add..196ac4b27 100644 --- a/apps/wr/components/ui/modal/chkgd/chkgdModal/chkgdModal.tsx +++ b/apps/wr/components/ui/modal/chkgd/chkgdModal/chkgdModal.tsx @@ -2,13 +2,24 @@ import { useWrStore } from "@/app/store"; import type { TableUpperProps } from "@/app/store/common/type/header"; import type { splRuseWaterType } from "@/app/store/prfmncReg/chkgdnReg/rainChkgdn/headList"; import type { rswtrPolutionsZode } from "@/app/store/prfmncReg/chkgdnReg/rswrtChkgdn/headList"; +import { codeToText } from "@/components/lib/func/commom"; import { GuideDetailsTable } from "@/components/ui/table/chkgdTable/guideDetailTable/guideDetailTable"; import { ScrollArea, Title } from "@common/business_components/ui"; import { Button } from "@common/components/ui"; import React, { useEffect, useState } from "react"; import type { z } from "zod"; -export default function ChkgdModal({ type, obj, setIsModal, readonly }: { type: string; obj: any, setIsModal: (open: boolean) => void, readonly: boolean }) { +export default function ChkgdModal({ + type, + obj, + setIsModal, + readonly, +}: { + type: string; + obj: any; + setIsModal: (open: boolean) => void; + readonly: boolean; +}) { const { rainChkgdn, rswtChkgdn, @@ -58,14 +69,14 @@ export default function ChkgdModal({ type, obj, setIsModal, readonly }: { type: setHeadList({ splHeadList: rainChkSttn.splHeadList, ruseHeadList: rainChkSttn.ruseHeadList, - rswtDetailHeadList: type === "RNB" ? [] : rswtChkSttn.rswtDetailSttnHeadList, + rswtDetailHeadList: + type === "RNB" ? [] : rswtChkSttn.rswtDetailSttnHeadList, }); } else { setHeadList({ splHeadList: rainChkgdn.splHeadList, ruseHeadList: rainChkgdn.ruseHeadList, - rswtDetailHeadList: - type === "RNB" ? [] : rswtChkgdn.rswtDetailHeadList, + rswtDetailHeadList: type === "RNB" ? [] : rswtChkgdn.rswtDetailHeadList, }); } }, [ @@ -73,12 +84,13 @@ export default function ChkgdModal({ type, obj, setIsModal, readonly }: { type: rainChkgdn.splHeadList, rainChkSttn.splHeadList, rswtChkgdn.rswtDetailHeadList, - rswtChkSttn.rswtDetailSttnHeadList + rswtChkSttn.rswtDetailSttnHeadList, ]); useEffect(() => { const result = obj.guideDetails?.reduce((acc: any, cur: any) => { const code = cur.utztnUsgCd; + const codeText = codeToText(cur.utztnUsgCd, "dmdUszCd"); const month = cur.ym?.slice(4); // "MM" const ruseMonthKey = `ruse${month}`; const splMonthKey = `spl${month}`; @@ -91,7 +103,12 @@ export default function ChkgdModal({ type, obj, setIsModal, readonly }: { type: (it: { utztnUsgCd: string }) => it?.utztnUsgCd === code ); if (!target) { - target = { utztnUsgCd: code, ruseTotal: 0, splTotal: 0 }; + target = { + utztnUsgCdText: codeText, + utztnUsgCd: code, + ruseTotal: 0, + splTotal: 0, + }; acc.push(target); } // 월별 값 누적 @@ -106,12 +123,11 @@ export default function ChkgdModal({ type, obj, setIsModal, readonly }: { type: if (result) { // '기타' 항목을 배열의 맨 뒤로 정렬합니다. result.sort((a: splRuseWaterType, b: splRuseWaterType) => { - if (a.utztnUsgCd === "기타") return 1; // a를 b 뒤로 보냅니다. - if (b.utztnUsgCd === "기타") return -1; // b를 a 뒤로 보냅니다. + if (a.utztnUsgCd === "07") return 1; // a를 b 뒤로 보냅니다. + if (b.utztnUsgCd === "07") return -1; // b를 a 뒤로 보냅니다. return 0; // 순서를 유지합니다. }); } - setGuidData(result as splRuseWaterType[]); if (obj.rswtrPollutions) { @@ -124,6 +140,10 @@ export default function ChkgdModal({ type, obj, setIsModal, readonly }: { type: obj.rswtrPollutions.forEach( (item: z.infer) => { const nodeKey = String(item.node); + item["utztnUsgCdText"] = codeToText( + item.utztnUsgCd ?? "", + "dmdUszCd" + ); resultPolution[nodeKey]?.push(item); } ); @@ -132,8 +152,8 @@ export default function ChkgdModal({ type, obj, setIsModal, readonly }: { type: Object.entries(resultPolution).forEach(([nodeKey, items]) => { const onlyData = items as z.infer[]; if (onlyData.length === 0) return; - const total = initStats(); + onlyData.forEach((item) => { total.grssClfgUswtr += item.grssClfgUswtr; total.combResdch += item.combResdch; @@ -148,7 +168,7 @@ export default function ChkgdModal({ type, obj, setIsModal, readonly }: { type: }); const average = { - utztnUsgCd: "평균", + utztnUsgCdText: "평균", edit: false, grssClfgUswtr: (total.grssClfgUswtr / onlyData.length).toFixed(1), combResdch: (total.combResdch / onlyData.length).toFixed(1), @@ -168,8 +188,8 @@ export default function ChkgdModal({ type, obj, setIsModal, readonly }: { type: // '기타' 항목을 배열의 맨 뒤로 정렬합니다. resultPolution[nodeKey].sort((a: any, b: any) => { - if (a.utztnUsgCd === "기타") return 1; // a를 b 뒤로 보냅니다. - if (b.utztnUsgCd === "기타") return -1; // b를 a 뒤로 보냅니다. + if (a.utztnUsgCd === "07") return 1; // a를 b 뒤로 보냅니다. + if (b.utztnUsgCd === "07") return -1; // b를 a 뒤로 보냅니다. return 0; // 순서를 유지합니다. }); @@ -213,16 +233,15 @@ export default function ChkgdModal({ type, obj, setIsModal, readonly }: { type: }); obj.guideDetails = realGuideDetail; if (type === "RNB") { - rainChkGuidUpdate(obj); - setIsModal(false) + setIsModal(false); } else { const polution = Object.values(upPolutionData) .flat() .filter((item) => item.utztnUsgCd !== "평균"); obj.rswtrPollutions = polution; rwstPolAndGuideUpdate([obj]); - setIsModal(false) + setIsModal(false); } }; @@ -247,7 +266,11 @@ export default function ChkgdModal({ type, obj, setIsModal, readonly }: { type: } > {!rainChkSttn.isSttn ? ( - ) : ( @@ -256,7 +279,8 @@ export default function ChkgdModal({ type, obj, setIsModal, readonly }: { type:

{type === "RNB" - ? `시설명 : (${obj.bdstNm})` : `시설명 : (${obj.building.bdstNm})`} + ? `시설명 : (${obj.bdstNm})` + : `시설명 : (${obj.building.bdstNm})`}

@@ -269,7 +293,11 @@ export default function ChkgdModal({ type, obj, setIsModal, readonly }: { type: { setChGuidData(data); @@ -284,7 +312,11 @@ export default function ChkgdModal({ type, obj, setIsModal, readonly }: { type: { setChGuidData(data); diff --git a/apps/wr/components/ui/table/chkgdTable/rainChkgd/rainChkgdTable.tsx b/apps/wr/components/ui/table/chkgdTable/rainChkgd/rainChkgdTable.tsx index 6fc2c0632..b29d8d935 100644 --- a/apps/wr/components/ui/table/chkgdTable/rainChkgd/rainChkgdTable.tsx +++ b/apps/wr/components/ui/table/chkgdTable/rainChkgd/rainChkgdTable.tsx @@ -4,7 +4,7 @@ import { useWrStore } from "@/app/store"; import type { TableUpperProps } from "@/app/store/common/type/header"; import { rainPageSize, type rainChkZodType } from "@/app/store/prfmncReg/chkgdnReg/rainChkgdn"; import type { chHeadType } from "@/app/store/prfmncReg/chkgdnReg/rainChkgdn/headList"; -import { tableData } from "@/components/lib/func/commom"; +import { codeToText, tableData } from "@/components/lib/func/commom"; import { chRowspanTable, rainChkTableData @@ -89,15 +89,18 @@ export default function RainChkgdTable({ } ) }) + return { ...item, ...bud[0], + utztnUsgCdText: codeToText(item.guideDetails[0].utztnUsgCd, 'dmdUszCd'), + oilqMeasMthdText:codeToText(item.oilqMeasMthd, 'rainFcltFlowRate'), + operMngCdText:codeToText(item.operMngCd.trim(), 'rainRswtMng'), rainyDetails:rainyDetails, rowspan: item.rainyDetails?.length, }; }); - console.log('rainChg ', rainChg) setMakeTableData(rainChkTableData(rainChg)); } else { setMakeTableData([]);