하수재이용시설 현황 일단 조회만 가능
This commit is contained in:
@@ -71,6 +71,7 @@ export default function CoSttn() {
|
||||
|
||||
const getSgg = useCallback((val: string | number) => {
|
||||
setObjSearch((prev) => ({ ...prev, sgg: String(val) }));
|
||||
setPageNation(1)
|
||||
}, []);
|
||||
|
||||
useEffect(() => {
|
||||
@@ -146,12 +147,19 @@ export default function CoSttn() {
|
||||
if (con) {
|
||||
if (seartchTxt && seartchTxt?.length > 0) {
|
||||
|
||||
coSttnTxtSearch("1", "13", String(con), seartchTxt ?? "");
|
||||
coSttnTxtSearch(String(pageNation), "13", String(con), seartchTxt ?? "");
|
||||
} else {
|
||||
coSttnSearch("1", "13", String(con));
|
||||
coSttnSearch(String(pageNation), "13", String(con));
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
useEffect(() =>{
|
||||
|
||||
},[pageNation])
|
||||
|
||||
|
||||
|
||||
return (
|
||||
<>
|
||||
<ContentsDiv>
|
||||
@@ -166,7 +174,10 @@ export default function CoSttn() {
|
||||
label="시도"
|
||||
selectClass={""}
|
||||
selectArray={code.cityCd || []}
|
||||
onSelectValue={getSelCity}
|
||||
onSelectValue={(val)=>{
|
||||
getSelCity(val)
|
||||
setPageNation(1)
|
||||
} }
|
||||
value={objSearch.city}
|
||||
/>
|
||||
<SelectBox
|
||||
@@ -196,7 +207,6 @@ export default function CoSttn() {
|
||||
size={"sm"}
|
||||
className={btnClass}
|
||||
onClick={() => {
|
||||
|
||||
setUpdateData(undefined);
|
||||
setIsDmdModal({ ...isDmdModal, isMoal: true });
|
||||
}}
|
||||
@@ -243,7 +253,13 @@ export default function CoSttn() {
|
||||
cellClick={(index: number | undefined, headId: string) => {
|
||||
setUpdateData(coSttnRes[index as number]);
|
||||
}}
|
||||
onPageChange={setPageNation}
|
||||
onPageChange={(page) =>{
|
||||
const con = (objSearch.sgg && objSearch.sgg !== "0") ? objSearch.sgg : objSearch.city;
|
||||
setPageNation(page)
|
||||
coSttnSearch( String(page), "13", String(con));
|
||||
|
||||
|
||||
} }
|
||||
></UiTable>
|
||||
</ListDiv>
|
||||
</div>
|
||||
|
||||
@@ -30,6 +30,7 @@ export default function PbnstSttn() {
|
||||
pbnSttnInit,
|
||||
getPbnStnDetail,
|
||||
pbnNmSearch,
|
||||
getFlcts
|
||||
} = useWrStore((state) => state);
|
||||
|
||||
const ref = useRef<ReturnType>({} as ReturnType);
|
||||
@@ -77,13 +78,20 @@ export default function PbnstSttn() {
|
||||
}, [pbnstSttn.excelList]);
|
||||
useEffect(() => {
|
||||
if (!pbnstSttn.isInit) {
|
||||
pbnSttnInit("1", "20", ref.current, searchYear);
|
||||
getFlcts()
|
||||
|
||||
}
|
||||
}, [pbnstSttn.isInit, pbnSttnInit, ref.current]);
|
||||
useEffect(() => {
|
||||
|
||||
console.log('pbnstSttn.pbnstSttnRes ' ,pbnstSttn.pbnstSttnRes )
|
||||
setBdstTable(pbnstSttn.pbnstSttnRes);
|
||||
}, [pbnstSttn.pbnstSttnRes]);
|
||||
|
||||
useEffect(() =>{
|
||||
pbnSttnInit("1", "20", ref.current, searchYear, pbnstSttn.fclts);
|
||||
},[pbnstSttn.fclts])
|
||||
|
||||
// useEffect(() => {
|
||||
// pbnstSttnSearch("1", "20", ref.current, pbnRuseNm, searchYear);
|
||||
// }, [pageNation, ref.current, pbnRuseNm, searchYear, pbnstSttnSearch]);
|
||||
@@ -94,7 +102,7 @@ export default function PbnstSttn() {
|
||||
// }, [pbnRuseNm,pageNation]);
|
||||
|
||||
useEffect(() => {
|
||||
pbnstSttnSearch(false, String(pageNation), "20", returnType, pbnRuseNm, searchYear);
|
||||
// pbnstSttnSearch(false, String(pageNation), "20", returnType, pbnRuseNm, searchYear);
|
||||
}, [pageNation]);
|
||||
|
||||
useEffect(() => {
|
||||
|
||||
@@ -37,7 +37,6 @@ import {
|
||||
type PrfType,
|
||||
} from "@/app/store/prfmncReg/pbnstPrfmncReg/type";
|
||||
import { excelToPbnPrfData } from "@/app/store/prfmncReg/pbnstPrfmncReg/excel";
|
||||
import data from "@common/components/ui/icon-finder/data";
|
||||
|
||||
export default function prfmncPrfmncReg() {
|
||||
const { code, prfmnc, prfmncHasuInit, prfmnRegData } = useWrStore(
|
||||
@@ -169,7 +168,12 @@ export default function prfmncPrfmncReg() {
|
||||
}
|
||||
}, [prfmnc.isInit, prfmncHasuInit]);
|
||||
useEffect(() => {
|
||||
setbdstTable(prfmncRes);
|
||||
|
||||
|
||||
if(prfmncRes&&prfmncRes.length>0){
|
||||
|
||||
setbdstTable(prfmncRes);
|
||||
}
|
||||
|
||||
// cellNum이 0일 경우(첫 번째 행)도 유효한 인덱스이므로 undefined 여부만 체크합니다.
|
||||
if (cellNum !== undefined) {
|
||||
|
||||
@@ -87,9 +87,6 @@ export const buildingToExcelType = (
|
||||
export const excelToRainChkData = (excelData: any, year: string) => {
|
||||
const errors: string[] = [];
|
||||
const rainChkgdData: rainChkZodType[] = excelData.map((item: any) => {
|
||||
|
||||
|
||||
console.log('item ', item)
|
||||
if (item["점검일"] !== undefined) {
|
||||
const checkYmd = item["점검일"].replace(/\./g, "")
|
||||
let vltnDt = item["과태료 부과일(위반일)"]
|
||||
@@ -110,7 +107,6 @@ export const excelToRainChkData = (excelData: any, year: string) => {
|
||||
flg: "RNB",
|
||||
};
|
||||
});
|
||||
|
||||
return {
|
||||
bdstNm:item["시설명"] ?? "",
|
||||
bdstRuseFcltFk: Number(item["NO"]),
|
||||
@@ -138,64 +134,67 @@ export const excelToRainChkData = (excelData: any, year: string) => {
|
||||
}
|
||||
}).filter((el: any) => el !== undefined);
|
||||
|
||||
// ✨ 오류 검사 - 가공된 데이터 기준
|
||||
const isInvalidNumber = (val: any) =>
|
||||
val !== undefined && val !== null && val !== "" && isNaN(Number(val));
|
||||
return rainChkgdData;
|
||||
// // ✨ 오류 검사 - 가공된 데이터 기준
|
||||
// const isInvalidNumber = (val: any) =>
|
||||
// val !== undefined && val !== null && val !== "" && isNaN(Number(val));
|
||||
|
||||
const isInvalidDate = (val: any) =>
|
||||
typeof val === "string" && !/^\d{4}\.\d{2}\.\d{2}$/.test(val.trim());
|
||||
// const isInvalidDate = (val: any) =>
|
||||
// typeof val === "string" && !/^\d{4}\.\d{2}\.\d{2}$/.test(val.trim());
|
||||
|
||||
const buildErrorMessage = (item: any, issues: string[]): string => {
|
||||
const 시설명 = item.bdstNm ?? "";
|
||||
const 점검일 = item.chckYmd ?? "";
|
||||
const 이용용도 = item.utztnUsgCd ?? "";
|
||||
return `시설명: ${시설명}, 점검일: ${점검일}, 이용용도: ${이용용도} (=> ${issues.join(", ")})`;
|
||||
};
|
||||
// const buildErrorMessage = (item: any, issues: string[]): string => {
|
||||
// const 시설명 = item.bdstNm ?? "";
|
||||
// const 점검일 = item.chckYmd ?? "";
|
||||
// const 이용용도 = item.utztnUsgCd ?? "";
|
||||
// return `시설명: ${시설명}, 점검일: ${점검일}, 이용용도: ${이용용도} (=> ${issues.join(", ")})`;
|
||||
// };
|
||||
|
||||
if (rainChkgdData.length > 0) {
|
||||
rainChkgdData.forEach((rain: any) => {
|
||||
const item = rain.__origin; // 원본 item
|
||||
const issues: string[] = [];
|
||||
// if (rainChkgdData.length > 0) {
|
||||
// rainChkgdData.forEach((rain: any) => {
|
||||
// const item = rain.__origin; // 원본 item
|
||||
// const issues: string[] = [];
|
||||
|
||||
if (rain.chckYmd && isInvalidDate(rain.chckYmd)) {
|
||||
issues.push(`점검일: 날짜 형식 아님 (${rain.chckYmd})`);
|
||||
}
|
||||
// if (rain.chckYmd && isInvalidDate(rain.chckYmd)) {
|
||||
// issues.push(`점검일: 날짜 형식 아님 (${rain.chckYmd})`);
|
||||
// }
|
||||
|
||||
if (rain.vltnDt && isInvalidDate(rain.vltnDt)) {
|
||||
issues.push(`과태료 부과일(위반일): 날짜 형식 아님 (${rain.vltnDt})`);
|
||||
}
|
||||
// if (rain.vltnDt && isInvalidDate(rain.vltnDt)) {
|
||||
// issues.push(`과태료 부과일(위반일): 날짜 형식 아님 (${rain.vltnDt})`);
|
||||
// }
|
||||
|
||||
// [
|
||||
// "연간운영비(원/년)", "PH", "탁도", "총대장균군수", "과태료부과금액(천원)"
|
||||
// ].forEach((key) => {
|
||||
// if (isInvalidNumber(item[key])) {
|
||||
// issues.push(`${key}: 숫자 형식 아님 (${item[key]})`);
|
||||
// }
|
||||
// }
|
||||
// // [
|
||||
// // "연간운영비(원/년)", "PH", "탁도", "총대장균군수", "과태료부과금액(천원)"
|
||||
// // ].forEach((key) => {
|
||||
// // if (isInvalidNumber(item[key])) {
|
||||
// // issues.push(`${key}: 숫자 형식 아님 (${item[key]})`);
|
||||
// // }
|
||||
// // }
|
||||
|
||||
// );
|
||||
// // );
|
||||
|
||||
for (let i = 1; i <= 12; i++) {
|
||||
const month = `${i}월`;
|
||||
if (isInvalidNumber(item[`대체_${month}`])) {
|
||||
issues.push(`대체_${month}: 숫자 형식 아님 (${item[`대체_${month}`]})`);
|
||||
}
|
||||
if (isInvalidNumber(item[`빗물_${month}`])) {
|
||||
issues.push(`빗물_${month}: 숫자 형식 아님 (${item[`빗물_${month}`]})`);
|
||||
}
|
||||
}
|
||||
// for (let i = 1; i <= 12; i++) {
|
||||
// const month = `${i}월`;
|
||||
// if (isInvalidNumber(item[`대체_${month}`])) {
|
||||
// issues.push(`대체_${month}: 숫자 형식 아님 (${item[`대체_${month}`]})`);
|
||||
// }
|
||||
// if (isInvalidNumber(item[`빗물_${month}`])) {
|
||||
// issues.push(`빗물_${month}: 숫자 형식 아님 (${item[`빗물_${month}`]})`);
|
||||
// }
|
||||
// }
|
||||
|
||||
if (issues.length > 0) {
|
||||
errors.push(buildErrorMessage(item, issues));
|
||||
}
|
||||
});
|
||||
}
|
||||
// if (issues.length > 0) {
|
||||
// errors.push(buildErrorMessage(item, issues));
|
||||
// }
|
||||
// });
|
||||
// }
|
||||
|
||||
if (errors.length > 0) {
|
||||
return { rainChkgdData: [], errors };
|
||||
}
|
||||
// if (errors.length > 0) {
|
||||
// return { rainChkgdData: [], errors };
|
||||
// }
|
||||
|
||||
return { rainChkgdData, errors: [] };
|
||||
// return { rainChkgdData, errors: [] };
|
||||
|
||||
return rainChkgdData;
|
||||
};
|
||||
|
||||
|
||||
|
||||
@@ -68,7 +68,7 @@ const hasuListFetch = async (page: number, sggOrCity: string) => {
|
||||
prfList: data.prfList,
|
||||
});
|
||||
}
|
||||
});
|
||||
}).filter(Boolean); // undefined 값을 제거합니다.
|
||||
|
||||
return findData;
|
||||
};
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import type { CommonTableProps, TableUpperProps } from "@/app/store/common/type/header";
|
||||
import type { z } from "zod";
|
||||
import { any, type z } from "zod";
|
||||
import { pbnSttHeadListExport, pbnstSttNodeListExport, ruseDmdHeadListExport, ruseFcltHeadListExport, ruseFcltNodeListExport, ruseGuranteeHeadListExport, rusePplHeadListExport, ruseSplyHeadListExport } from "./headList";
|
||||
import { fetchType, getFetch, postFectch } from "@/components/lib/api";
|
||||
import { controlHeadView } from "../rainSttn";
|
||||
@@ -28,6 +28,7 @@ export type pbnstSttnState = {
|
||||
ruseDmdHeadList: TableUpperProps[]
|
||||
ruseFcltHeadList: TableUpperProps[]
|
||||
excelList: [];
|
||||
fclts:string[]
|
||||
isInit: boolean;
|
||||
};
|
||||
};
|
||||
@@ -40,13 +41,15 @@ type pbnstSttnActions = {
|
||||
total: string,
|
||||
reurnValue: ReturnType,
|
||||
searchNm: string | undefined,
|
||||
year: string,
|
||||
year: string
|
||||
) => void;
|
||||
getFlcts:()=>void;
|
||||
pbnSttnInit: (
|
||||
page: string,
|
||||
total: string,
|
||||
reurnValue: ReturnType,
|
||||
year: string
|
||||
year: string,
|
||||
flcts:string[]
|
||||
) => void;
|
||||
getPbnStnDetail: (pbnstRuseFcltPk: string) => void;
|
||||
pbnNmSearch: (
|
||||
@@ -74,6 +77,7 @@ export const pbnstSttnStateExport: pbnstSttnState = {
|
||||
pbnstDetail: {} as customPbnst,
|
||||
pbnstSearchData: [],
|
||||
excelList: [],
|
||||
fclts:[],
|
||||
isInit: false,
|
||||
},
|
||||
};
|
||||
@@ -83,46 +87,49 @@ const hasuListFetch = async (
|
||||
total: string,
|
||||
reurnValue: ReturnType,
|
||||
searchNm: string | undefined,
|
||||
year: string
|
||||
year: string,
|
||||
flcts:string[]
|
||||
) => {
|
||||
let url = `/prcsFclt/ruseInfo/`;
|
||||
|
||||
let url = "";
|
||||
if (reurnValue.partValue === "A") {
|
||||
url = `/prcsFclt/info/${page}/${total}/${reurnValue.partValue}/${
|
||||
url+=`${page}/${total}/${reurnValue.partValue}/${
|
||||
// reurnValue.sidoValue ? reurnValue.sidoValue : reurnValue.sigunValue
|
||||
reurnValue.sigunValue !== '0' ? reurnValue.sigunValue : reurnValue.sidoValue
|
||||
}/0/1/SW`
|
||||
} else if (reurnValue.partValue === "R") {
|
||||
url = `/prcsFclt/info/${page}/${total}/${reurnValue.partValue}/${reurnValue.regionValue
|
||||
url += `${page}/${total}/${reurnValue.partValue}/${reurnValue.regionValue
|
||||
? reurnValue.regionValue
|
||||
: reurnValue.unitWaterShedValue
|
||||
? reurnValue.unitWaterShedValue
|
||||
: reurnValue.middleRegionValue
|
||||
}/0/1/SW`
|
||||
} else {
|
||||
url = `/prcsFclt/info/${page}/${total}/${reurnValue.envPartValue}/${reurnValue.sidoValue ? reurnValue.sidoValue : reurnValue.sigunValue}/0/1/SW`
|
||||
} else if( reurnValue.partValue === 'G2120'){
|
||||
url += `${page}/${total}/${reurnValue.envPartValue}/${reurnValue.sidoValue ? reurnValue.sidoValue : reurnValue.sigunValue}/0/1/SW`
|
||||
|
||||
}else{
|
||||
url += `1/2/A/0/0/1/SW`
|
||||
|
||||
}
|
||||
if (searchNm && searchNm?.length > 0) {
|
||||
url += "/" + searchNm
|
||||
}
|
||||
|
||||
console.log("주소", url)
|
||||
const pbnList = await getFetch(fetchType.COMMON, url);
|
||||
console.log("pbnList", pbnList)
|
||||
const arrayList = pbnList.map((item: pubHasuType) => item.bscFctCd);
|
||||
console.log("어레이리스트", arrayList)
|
||||
|
||||
const pbnList = await postFectch(url, flcts,fetchType.COMMON);
|
||||
|
||||
|
||||
const getRuseList = await postFectch(
|
||||
`/reuseFc/pubDetailList/${year}`,
|
||||
arrayList,
|
||||
flcts,
|
||||
fetchType.WR
|
||||
);
|
||||
console.log("getRuseList", getRuseList)
|
||||
const checkWrRegListRes = getRuseList.data;
|
||||
const count = getRuseList.count;
|
||||
|
||||
const data: WaterReuseFacility[] = checkWrRegListRes.map(
|
||||
(item: FcPrfType) => {
|
||||
const findData = pbnList.find(
|
||||
const findData = pbnList.data.find(
|
||||
(fclt: pubHasuType) =>
|
||||
fclt.bscFctCd === item.pbnstRuseFcltPk.substring(0, 11)
|
||||
);
|
||||
@@ -182,6 +189,8 @@ const hasuListFetch = async (
|
||||
};
|
||||
}
|
||||
);
|
||||
|
||||
console.log('data ', data)
|
||||
return data;
|
||||
};
|
||||
|
||||
@@ -189,6 +198,15 @@ export const pbnstSttnActionsExport: (set: any) => pbnstSttnActions = (
|
||||
set: any
|
||||
) => {
|
||||
return {
|
||||
getFlcts:async ()=>{
|
||||
const fclts= await getFetch(fetchType.WR,'/reuseFc/pubFc')
|
||||
return set((state: pbnstSttnState) => ({
|
||||
pbnstSttn: {
|
||||
...state.pbnstSttn,
|
||||
fclts:fclts
|
||||
},
|
||||
}));
|
||||
},
|
||||
pbnstChSttnHead: async (
|
||||
headList: z.infer<typeof sttnHeadListType>
|
||||
): Promise<void> => {
|
||||
@@ -211,16 +229,20 @@ export const pbnstSttnActionsExport: (set: any) => pbnstSttnActions = (
|
||||
year: string,
|
||||
) => {
|
||||
try {
|
||||
console.log("여기")
|
||||
|
||||
let fclts = [] as any
|
||||
set((state: pbnstSttnState) => {
|
||||
fclts = state.pbnstSttn.fclts
|
||||
});
|
||||
const pbnstSttnRes = await hasuListFetch(
|
||||
page,
|
||||
total,
|
||||
reurnValue,
|
||||
searchNm,
|
||||
year
|
||||
year,
|
||||
fclts,
|
||||
);
|
||||
|
||||
console.log("pbnstSttnRes", pbnstSttnRes);
|
||||
// if (Number(total) > 9000) {
|
||||
if (isExcel) {
|
||||
const pbnstExcel = excelPbnstSttnParsing(pbnstSttnRes);
|
||||
@@ -249,23 +271,24 @@ export const pbnstSttnActionsExport: (set: any) => pbnstSttnActions = (
|
||||
console.log("error", erTxt);
|
||||
}
|
||||
},
|
||||
pbnSttnInit: async (
|
||||
pbnSttnInit: async(
|
||||
page: string,
|
||||
total: string,
|
||||
reurnValue: ReturnType,
|
||||
year: string
|
||||
year: string,
|
||||
fclts:string[]
|
||||
) => {
|
||||
try {
|
||||
|
||||
const pbnstSttnRes = await hasuListFetch(
|
||||
page,
|
||||
total,
|
||||
reurnValue,
|
||||
undefined,
|
||||
year
|
||||
);
|
||||
page,
|
||||
total,
|
||||
reurnValue,
|
||||
undefined,
|
||||
year,
|
||||
fclts
|
||||
);
|
||||
|
||||
set((state: pbnstSttnState) => {
|
||||
set( (state: pbnstSttnState) => {
|
||||
return {
|
||||
...state,
|
||||
pbnstSttn: {
|
||||
|
||||
@@ -71,22 +71,26 @@ export default function ChkgdExcel({ type,setIsRegExcel }: { type: string, setI
|
||||
if (file)
|
||||
if (type === "RNB") {
|
||||
filePicked(file, 0).then((res) => {
|
||||
if (res !== undefined){
|
||||
// if (res !== undefined){
|
||||
|
||||
const excelData = excelToRainChkData(res, form.getValues("chckYr"))
|
||||
|
||||
if( excelData&&excelData.errors.length>0){
|
||||
const excelData = excelToRainChkData(res, form.getValues("chckYr"))
|
||||
if(res !== undefined)
|
||||
setExcelData(excelData)
|
||||
|
||||
// if( excelData&&excelData.errors.length>0){
|
||||
|
||||
excelData.errors.forEach((err) =>{
|
||||
toast.error(err)
|
||||
})
|
||||
}else{
|
||||
// excelData.errors.forEach((err) =>{
|
||||
// toast.error(err)
|
||||
// })
|
||||
// }else{
|
||||
|
||||
setExcelData(excelData.rainChkgdData)
|
||||
}
|
||||
}
|
||||
// }
|
||||
|
||||
// }
|
||||
|
||||
});
|
||||
|
||||
|
||||
})
|
||||
} else if (type === "RST") {
|
||||
filePickedArray(file, 0).then((res) => {
|
||||
if (res && res?.length > 1) {
|
||||
|
||||
Reference in New Issue
Block a user