Merge remote-tracking branch 'origin/iipbs/wr/dev'

This commit is contained in:
yschoi
2025-07-31 13:29:41 +09:00
17 changed files with 300 additions and 214 deletions
@@ -16,7 +16,6 @@ export class LoginApiService implements LoginService {
public async login(payload: ILogin): Promise<void> {
try {
console.log(' ENDPOINT.USER_SERVICE.LOGIN ', ENDPOINT.USER_SERVICE.LOGIN)
const response = await fetch( PROXY_HOST+ ENDPOINT.USER_SERVICE.LOGIN, {
method: "POST",
body: JSON.stringify({
@@ -17,8 +17,6 @@ export class LoginApiService implements LoginService {
public async login(payload: ILogin): Promise<void> {
try {
console.log(' ENDPOINT.USER_SERVICE.LOGIN ', ENDPOINT.USER_SERVICE.LOGIN)
console.log(payload.userId+' '+payload.password)
const response = await fetch( PROXY_HOST+ ENDPOINT.USER_SERVICE.LOGIN, {
method: "POST",
body: JSON.stringify({
+5 -2
View File
@@ -61,13 +61,16 @@ const Map = () => {
// 2. data가 OpenLayers Feature 인스턴스인지 확인
let foundFeature: any = null;
console.log(data)
//console.log(data.getId())
let featureId = data.fid;
const layerName = data.layerNm;
if (layerName === "tb_wr_bdst_ruse_fclt") {
if (layerName === "재이용시설") {
// 재이용시설
featureId = `${layerName}.${data.searchPk}`;
} else if ( //빗물이용시설, 중수도시설
layerName === "tb_wr_rnwtr_utztn_fclt" ||
layerName === "빗물이용시설" ||
layerName == "tb_wr_rswtr_fclt"
) {
featureId = `${layerName}.${data.bdstInfoSn}`;
+12 -9
View File
@@ -116,6 +116,7 @@ const NewWindowPopup: React.FC<NewWindowPopupProps> = ({
const [mngList, setMngList] = useState<DemandCompType[]>(coSttnRes || []);
///////////////////////////////////////////// 피쳐데이터 선택 시 각 시설별 데이터 처리 ///////////////////////////////////////////////
const getSelectedLayers = () => {
console.log(1)
let result = null;
const layers = gisMap ? gisMap.getLayers().getArray().filter((l: any) => l.getVisible()) : []; // gisMap이 null인지 확인 후 레이어 가져오기
let featureLayer: { get: (key: string) => any } = { get: () => null };
@@ -127,6 +128,7 @@ const NewWindowPopup: React.FC<NewWindowPopupProps> = ({
}
});
result = featureLayer.get('lyrNm');
console.log(result)
return result;
};
@@ -156,15 +158,15 @@ const NewWindowPopup: React.FC<NewWindowPopupProps> = ({
}
};
const detainSttn = async (featureCd: string, layerNm: string) => {
if (layerNm == 'tb_wr_rnwtr_utztn_fclt') { //빗물이용시설
if (layerNm == '빗물이용시설') { //빗물이용시설
const res = await getFetch(fetchType.WR, `/reuseFc/rainyInfoList/1/20/0/${featureCd}`)
setRainList(res)
}
else if (layerNm == 'tb_wr_rswtr_fclt') { //중수도 시설
else if (layerNm == '중수도시설') { //중수도 시설
const res = await getFetch(fetchType.WR, `/reuseFc/waterreuseFc/1/20/0/${featureCd}`)
setRswtrList(res)
}
else if(layerNm =='tb_wr_ruse_fclt_dmd_co'){ //수요처
else if(layerNm =='수요처'){ //수요처
const res = await getFetch(fetchType.WR, `/reuseFc/request/1/20/0/${featureCd}`)
setMngList(res)
}
@@ -192,6 +194,7 @@ const NewWindowPopup: React.FC<NewWindowPopupProps> = ({
},[mngList])
const layerId = getSelectedLayers();
console.log(layerId)
if (featureData && typeof featureData.getProperties === "function") {
const selectedVal = featureData.getProperties();
let featureCd = layerId == '하수재이용시설' ? selectedVal?.swtrmt_fclt_cd : layerId == '빗물이용시설' || layerId == '중수도시설' || layerId == '온배수시설' || layerId == '수요처' ? selectedVal?.bdst_nm : layerId == '하수처리시설' ? selectedVal?.swtrmt_fclt_nm : null;
@@ -505,17 +508,17 @@ const NewWindowPopup: React.FC<NewWindowPopupProps> = ({
layerId = seletectedLayerNm || '';
}
//하수처리시설
const isPrcsFclt = layerId == 'tb_il_swage_prcs_fclt'
const isPrcsFclt = layerId == '하수처리시설'
// 재이용시설
const isPbnst = layerId == 'tb_wr_bdst_ruse_fclt';
const isPbnst = layerId == '재이용시설';
// 빗물이용시설
const isRain = layerId == 'tb_wr_rnwtr_utztn_fclt';
const isRain = layerId == '빗물이용시설';
// 중수도시설
const isRswt = layerId == 'tb_wr_rswtr_fclt';
const isRswt = layerId == '중수도시설';
// 온배수시설
const isHtdfl = layerId == 'tb_wr_htdfl_fclt';
const isHtdfl = layerId == '온배수시설';
// 수요처관리
const isReuseMng = layerId == 'tb_wr_ruse_fclt_dmd_co';
const isReuseMng = layerId == '수요처관리';
if (isPrcsFclt) {
if (viewMode == 'list') {
return (
@@ -71,7 +71,7 @@ export default function PublicReuseFaciltyInsert() {
// defaultValues: { items: pbnstRegArrayZod.parse([]) },
mode: "onChange",
});
const { isDirty } = form.formState;
// const { isDirty } = form.formState;
const {
fields: items,
@@ -90,10 +90,10 @@ export default function PublicReuseFaciltyInsert() {
}, [pbnst.isInit, pubHasuInit]);
const onSubmit = async (valuse: { items: PbnstRegArrrayType }) => {
if (!isDirty) {
toast.error("변경사항이 없습니다."); // 변경사항이 없으면 메시지 표시
return;
}
// if (!isDirty) {
// toast.error("변경사항이 없습니다."); // 변경사항이 없으면 메시지 표시
// return;
// }
const data = writeRgtrAndMdfr(valuse.items);
let bizs = [] as fcBizType[];
data.forEach((fclt) => {
@@ -1,6 +1,7 @@
"use client";
import { useWrStore } from "@/app/store";
import { btnClass } from "@/app/store/common/code";
import { prfRegPageSize } from "@/app/store/prfmncReg/pbnstPrfmncReg";
import type { customPbnst } from "@/app/store/ruseFcltMng/fcltReg/pbnstReg/type";
import type { WaterReuseFacility } from "@/app/store/ruseFcltMng/fcltSttn/pbnstSttn/type";
import { excelDownload, yearOptions } from "@/components/lib/func/commom";
@@ -33,6 +34,8 @@ export default function PbnstSttn() {
} = useWrStore((state) => state);
const { pbnstSttnRes, fclts, pbnstSttnResCount } = pbnstSttn;
const [isReset, setIsReset] = useState(false);
const ref = useRef<ReturnType>({} as ReturnType);
const [searchYear, setSearchYear] = useState<string>(
String(new Date().getFullYear())
@@ -67,6 +70,24 @@ export default function PbnstSttn() {
},
[getPbnStnDetail, pbnstSttnRes]
);
useEffect(() => {
if (!pbnstSttn.isInit) {
getFlcts();
}
}, [pbnstSttn.isInit]);
useEffect(() => {
pbnSttnInit("1", "15", ref.current, searchYear, fclts);
}, [fclts]);
useEffect(() => {
if (pbnstSttnRes && pbnstSttnRes.length > 0) {
setBdstTable(pbnstSttnRes);
} else {
setBdstTable([]);
}
}, [pbnstSttnRes]);
useEffect(() => {
if (pbnstSttn.excelList.length >= 0) {
@@ -79,23 +100,7 @@ export default function PbnstSttn() {
);
}
}, [pbnstSttn.excelList]);
useEffect(() => {
if (!pbnstSttn.isInit) {
getFlcts();
}
}, [pbnstSttn.isInit, pbnSttnInit, ref.current]);
useEffect(() => {
if (pbnstSttnRes && pbnstSttnRes.length > 0) {
setBdstTable(pbnstSttnRes);
} else {
setBdstTable([]);
}
}, [pbnstSttnRes]);
useEffect(() => {
pbnSttnInit("1", "15", ref.current, searchYear, fclts);
}, [fclts]);
useEffect(() => {
if (pbnstSttn.pbnstDetail.pbnstRuseFcltId)
@@ -157,16 +162,11 @@ export default function PbnstSttn() {
/>
</div>
}
queryClick={function (returnType: ReturnType): void {
pbnstSttnSearch(
false,
"1",
"15",
returnType,
pbnRuseNm,
searchYear,
fclts
);
queryClick={ ()=> {
// pbnSearch(returnType);
//setTableIndex(0)
setIsReset(true);
}}
excelClick={excelClick}
initClick={function (): void {
@@ -194,13 +194,16 @@ export default function PbnstSttn() {
pbnstSttnSearch(
false,
String(page),
String(15),
String(prfRegPageSize),
ref.current,
pbnRuseNm,
searchYear,
fclts
);
setIsReset(false);
}}
resetPageNo={isReset}
>
<HeadMakeColSpan upHeadList={pbnstSttn.pbnstSttNodeList} />
</UiTable>
@@ -38,11 +38,12 @@ import { useTranslation } from "react-i18next";
import { headMakeprfmnc } from "../chkgdnReg/TableHead";
export default function PrfmncPrfmncReg() {
const { auth, prfmnc, prfmncHasuInit, prfmnRegData, prfmncHasuNmSearch } = useWrStore(
const { auth, prfmnc, prfmncHasuInit, prfmnRegData, prfmncHasuNmSearch,getPrfFmcRes } = useWrStore(
(state) => state
);
const { pbnstPrfmncHeadList, monthHeadList, prfmncRes, prfmncResCount } = prfmnc;
const { prfPbnFclts, pbnstPrfmncHeadList, monthHeadList, prfmncRes, prfmncResCount } = prfmnc;
const { regAuthrtYn, mdfcnAuthrtYn } = auth;
const [isReset, setIsReset] = useState(false);
const [bdstTable, setbdstTable] = useState<FcPrfType[]>();
const [searchTxt, setSearchTxt] = useState<string>();
const [isExcelOpen, setIsExcelOPen] = useState<{
@@ -51,7 +52,6 @@ export default function PrfmncPrfmncReg() {
}>({ isModal: false, data: {} as FcPrfType });
const [inputData, setInputData] = useState<any[]>();
const [pbnstRuseFcltId, setpbnstRuseFcltId] = useState<string>();
const [pageNation, setPageNation] = useState<number>(1);
const [cellNum, setCellNum] = useState<number>(1);
const [searchYear, setSearchYear] = useState<string>(
String(new Date().getFullYear())
@@ -65,20 +65,6 @@ export default function PrfmncPrfmncReg() {
"A1:O1"
);
}, [prfmnc.excelList]);
/*
const onSave = useCallback(
async() => {
if (pbnstRuseFcltId) {
await prfmnRegData(pageNation,'41',
excelToPbnPrfData(
inputData as unknown as JSON[],
searchYear,
pbnstRuseFcltId
) as unknown as PrfType
);
// cellClick(cellNum)
}
}, [inputData, searchYear, pbnstRuseFcltId, pageNation,cellNum]);*/
const { t } = useTranslation('base');
const onSave = useCallback(() => {
@@ -86,19 +72,20 @@ export default function PrfmncPrfmncReg() {
if (!pbnstRuseFcltId) return;
prfmnRegData(
pageNation,
1,
'41',
excelToPbnPrfData(
inputData as unknown as JSON[],
searchYear,
pbnstRuseFcltId
) as unknown as PrfType
, searchYear
, searchYear,
prfPbnFclts
);
};
confirmToast(t('isUpdateMsg'), handleConfirm);
}, [inputData, searchYear, pbnstRuseFcltId, pageNation, cellNum]);
}, [inputData, searchYear, pbnstRuseFcltId, cellNum,prfPbnFclts]);
const cellClick = useCallback(
(index: number | undefined) => {
@@ -194,10 +181,15 @@ export default function PrfmncPrfmncReg() {
useEffect(() => {
if (!prfmnc.isInit) {
const year = new Date().getFullYear()
prfmncHasuInit(1, '41', String(year));
getPrfFmcRes()
}
}, [prfmnc.isInit, prfmncHasuInit]);
}, [prfmnc.isInit, getPrfFmcRes]);
useEffect(() =>{
const year = new Date().getFullYear()
prfmncHasuInit(1, '41',String(year) ,prfPbnFclts);
},[prfPbnFclts])
useEffect(() => {
@@ -254,14 +246,8 @@ export default function PrfmncPrfmncReg() {
<div className="flex flex-row space-x-2">
<Button size={"sm"} onClick={() => {
if (searchTxt && searchTxt?.length > 0) {
prfmncHasuNmSearch(1, '41', searchYear, searchTxt)
setPageNation(1)
} else {
prfmncHasuInit(1, '41', searchYear)
setPageNation(1)
}
setIsReset(true)
}}>
조회
</Button>
@@ -314,10 +300,15 @@ export default function PrfmncPrfmncReg() {
setCellNum(index ?? 0);
}}
onPageChange={
(page) => {
prfmncHasuInit(page, '41', searchYear);
setPageNation(page)
(page:number) => {
if (searchTxt && searchTxt?.length > 0) {
prfmncHasuNmSearch(page, '41', searchYear, searchTxt,prfPbnFclts)
} else {
prfmncHasuInit(page, '41', searchYear,prfPbnFclts)
}
setIsReset(false);
}}
resetPageNo={isReset}
/>
</ScrollArea>
</ListDiv>
@@ -350,9 +341,10 @@ export default function PrfmncPrfmncReg() {
setIsExcelOPen({ ...isExcelOpen, isModal: open })
}}
setModalExcelData={async (excelData) => {
await prfmnRegData(pageNation, '41',
await prfmnRegData(1, '41',
excelData,
searchYear
,prfPbnFclts
);
// 데이터 저장 후 UI 업데이트는 useEffect가 감지하여 처리하므로 여기서는 호출하지 않습니다.
}
@@ -150,9 +150,9 @@ export default function PbnstPrfmncSttn() {
}
const tableData = [...inUsageData, ...outUsageData, usageTotalObj];
setPrfData(tableData);
setExcelData(excelPrfmncSttnParsing(prfData ?? []))
// });
setExcelData(excelPrfmncSttnParsing(tableData ?? []))
} else {
setExcelData(excelPrfmncSttnParsing([]))
setPrfData([]);
}
}
@@ -605,7 +605,11 @@ export default function PbnstPrfmncSttn() {
isResetPage(true)
}}
excelClick={excelClick}
initClick={function (): void { }}
initClick={function (): void {
setPbnRuseNm("");
setFromDate(String(new Date().getFullYear()));
setToDate(String(new Date().getFullYear()))
}}
btnClass={btnClass}
ref={ref} isAdmin={false} />
</div>
+1 -1
View File
@@ -98,7 +98,7 @@ export const DmdCoReqSchema = z.object({
z.object({
ruseUtztnFcltNm: z.string(),
ruseUtztnFcltCd: z.string(),
})
}).nullish()
).nullish(),
totalConstCost: z.number().nullish(),
});
@@ -52,8 +52,6 @@ export const coSttnActionsExport: (set: any) => coSttnActions = (
`/reuseFc/request/${pageNo}/${pageCnt}/${con}`
);
console.log('coSttnRes ', coSttnRes)
set((state: coSttnState) => {
return {
...state,
@@ -7,16 +7,17 @@ import toast from "react-hot-toast";
const pbnstPrfmncHeadList = pbnstPrfmncHeadListExport;
const monthHeadList = monthHeadListExport;
export const prfRegPageSize = 10;
export type pbnstPrfmncState = {
prfmnc: {
isInit: boolean;
pbnstPrfmncHeadList: TableUpperProps[];
monthHeadList: TableUpperProps[];
prfmncRes: FcPrfType[];
prfmncResCount:number;
prfmncResCount: number;
excelList: number[];
pageKey:number
pageKey: number;
prfPbnFclts: string[];
};
};
@@ -26,68 +27,126 @@ export const pbnstPrfmncStateExport: pbnstPrfmncState = {
pbnstPrfmncHeadList: pbnstPrfmncHeadList,
monthHeadList: monthHeadList,
prfmncRes: [],
prfmncResCount:1,
prfPbnFclts: [],
prfmncResCount: 1,
excelList: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
pageKey:1
pageKey: 1,
},
};
export type pbnstPrfmncType = pbnstPrfmncState & pbnstPrfmncActions;
type pbnstPrfmncActions = {
prfmncHasuInit: (page: number, sggOrCity: string ,year:string) => void;
prfmncHasuNmSearch: (page: number, sggOrCity: string , txt:string ,year:string) => void;
prfmnRegData: (page:number,sggOrCity:string, data: PrfType,year:string) => void;
prfmncHasuInit: (
page: number,
sggOrCity: string,
year: string,
prfPbnFclts: string[]
) => void;
prfmncHasuNmSearch: (
page: number,
sggOrCity: string,
year: string,
searchTxt: string,
prfPbnFclts: string[]
) => void;
prfmnRegData: (
page: number,
sggOrCity: string,
data: PrfType,
year: string,
prfPbnFclts: string[]
) => void;
getPrfFmcRes: () => void;
};
const checkWrRegList = async (year:string) => {
const url =`/reuseFc/pubDetailList`
if(year&& year.length>0){
// url+=`/${year}`
const hasuListFetch = async (
page: number,
sggOrCity: string,
year: string,
prfPbnFclts: string[],
searchTxt?: string
) => {
let filteredFclt = prfPbnFclts;
if (sggOrCity !== "0") {
filteredFclt = prfPbnFclts?.filter((fclt: string) => {
return sggOrCity.length == 2
? fclt.slice(0, 2) === sggOrCity
: fclt.slice(0, 5) === sggOrCity;
});
}
const wrRegList = await getFetch("wr", url);
return wrRegList;
};
const hasuListFetch = async (page: number, sggOrCity: string , year:string,searchNm?:string ) => {
const checkWrRegListRes = await checkWrRegList(year);
const rainRes = await postFectch(
`/prcsFclt/ruseInfo/${page ? page : 1}/10/A/${sggOrCity ? sggOrCity : "11"}/0/1/SW`,
checkWrRegListRes?.fcltCds,
fetchType.COMMON
let url = `/prcsFclt/ruseInfo/1/${filteredFclt.length + 1}/A/${sggOrCity}/0/1/SW`;
if (searchTxt && searchTxt?.length > 0) {
url += `/${searchTxt}`;
}
const rainRes = await postFectch(url, filteredFclt, fetchType.COMMON);
const checkRuseFcltList =
searchTxt && searchTxt?.length > 0
? rainRes.data.map((item) => item.bscFctCd)
: filteredFclt;
const pubRuseList = await postFectch(
`/reuseFc/pubDetailList/${year}/${sggOrCity}/${page}/${prfRegPageSize}`,
checkRuseFcltList,
fetchType.WR
);
let findData = rainRes.data.map((item: pubHasuType) => {
const data = checkWrRegListRes?.fcPrfList.find(
(fclt: FcPrfType) =>
fclt.pbnstRuseFcltId.substring(0, 11) === item?.bscFctCd
);
if(data !==undefined){
return( {
const rusePrfList = pubRuseList.data
.map((item: FcPrfType) => {
const findData = rainRes.data?.find(
(fclt: pubHasuType) =>
item.pbnstRuseFcltId.substring(0, 11) === fclt?.bscFctCd
);
if (findData !== undefined) {
return {
sido: findData.sido,
gugun: findData.gugun,
bscFctNm: findData.bscFctNm,
bscFctCd: findData.bscFctCd,
ruseUtztnFcltNm: item.ruseUtztnFcltNm,
pbnstRuseFcltId: item.pbnstRuseFcltId,
prfList: item.prfList,
};
}
})
.filter(Boolean); // undefined 값을 제거합니다.
sido: item.sido,
gugun: item.gugun,
bscFctNm: item.bscFctNm,
bscFctCd: item.bscFctCd,
ruseUtztnFcltNm: data.ruseUtztnFcltNm,
pbnstRuseFcltId: data.pbnstRuseFcltId,
prfList: data.prfList,
});
}
}).filter(Boolean); // undefined 값을 제거합니다.
if(searchNm){
findData= findData.filter((ruse:any) => ruse.ruseUtztnFcltNm.includes(searchNm))
}
return {data:findData, count:findData.length};
return { data: rusePrfList, count: pubRuseList.count };
};
export const pbnstPrfmncActionsExport: (set: any) => pbnstPrfmncActions = (
set: any
) => {
return {
prfmncHasuInit: async (page: number, sggOrCity: string,year:string) => {
getPrfFmcRes: async () => {
try {
const prfmncRes = await hasuListFetch(page, sggOrCity, year);
const pbnPrfRes = await getFetch(fetchType.WR, "/reuseFc/pubFc");
console.log("pbnPrfRes ", pbnPrfRes);
set((state: pbnstPrfmncState) => ({
...state,
prfmnc: {
...state.prfmnc,
prfPbnFclts: pbnPrfRes,
},
}));
} catch (error) {
console.log(error);
}
},
prfmncHasuInit: async (
page: number,
sggOrCity: string,
year: string,
prfPbnFclts: string[]
) => {
try {
console.log("prfPbnFclts ", prfPbnFclts);
const prfmncRes = await hasuListFetch(
page,
sggOrCity,
year,
prfPbnFclts
);
return set((state: pbnstPrfmncState) => ({
...state,
prfmnc: {
@@ -101,9 +160,21 @@ export const pbnstPrfmncActionsExport: (set: any) => pbnstPrfmncActions = (
console.log(errorHasu);
}
},
prfmncHasuNmSearch: async (page: number, sggOrCity: string,fcltNm:string ,year:string)=> {
prfmncHasuNmSearch: async (
page: number,
sggOrCity: string,
year: string,
searchTxt: string,
prfPbnFclts: string[]
) => {
try {
const prfmncRes = await hasuListFetch(page, sggOrCity,fcltNm ,year);
const prfmncRes = await hasuListFetch(
page,
sggOrCity,
year,
prfPbnFclts,
searchTxt
);
return set((state: pbnstPrfmncState) => ({
...state,
prfmnc: {
@@ -117,7 +188,13 @@ export const pbnstPrfmncActionsExport: (set: any) => pbnstPrfmncActions = (
console.log(errorHasu);
}
},
prfmnRegData: async (page:number,sggOrCity:string,data: PrfType,year:string) => {
prfmnRegData: async (
page: number,
sggOrCity: string,
data: PrfType,
year: string,
prfPbnFclts: string[]
) => {
try {
const ressponse = await postFectch(
"/reuseFc/pubFcPrf",
@@ -125,11 +202,14 @@ export const pbnstPrfmncActionsExport: (set: any) => pbnstPrfmncActions = (
fetchType.WR
);
if (ressponse.status === 200) {
toast.success("하수재이용 시설 실적 등록이 완료되었습니다.");
const prfmncRes = await hasuListFetch(page, sggOrCity,year) ;
const prfmncRes = await hasuListFetch(
page,
sggOrCity,
year,
prfPbnFclts
);
return set((state: pbnstPrfmncState) => ({
...state,
@@ -138,10 +218,9 @@ export const pbnstPrfmncActionsExport: (set: any) => pbnstPrfmncActions = (
prfmncRes: prfmncRes.data,
prfmncResCount: prfmncRes.count,
isInit: false,
pageKey: state.prfmnc.pageKey + 1
pageKey: state.prfmnc.pageKey + 1,
},
}));
}
} catch (e) {
console.log(e);
@@ -50,42 +50,56 @@ const hasuListFetch = async (
page: number,
returnType: ReturnType,
searchNm: string | undefined,
year: string,
fromDate: string,
toDate: string,
flcts: string[]
) => {
let url = `/prcsFclt/ruseInfo/`;
let url = '';
let filteredFclt = flcts;
const filterData = returnType.sigunValue !== '0' ? returnType.sigunValue : returnType.sidoValue
if (filterData !== '0')
filteredFclt = flcts.filter((fclt: string) => {
return filterData.length == 2 ? fclt.slice(0, 2) === filterData : fclt.slice(0, 5) === filterData
})
if (returnType.partValue === "A") {
url += `${page}/5/${returnType.partValue}/${
url += `${returnType.partValue}/${
// returnType.sidoValue ? returnType.sidoValue : returnType.sigunValue
returnType.sigunValue !== '0' ? returnType.sigunValue : returnType.sidoValue
}/0/1/SW`
if (filterData !== '0')
filteredFclt = flcts.filter((fclt: string) => {
return filterData.length == 2 ? fclt.slice(0, 2) === filterData : fclt.slice(0, 5) === filterData
})
} else if (returnType.partValue === "R") {
url += `${page}/5/${returnType.partValue}/${returnType.regionValue
url += `${returnType.partValue}/${returnType.regionValue
? returnType.regionValue
: returnType.unitWaterShedValue
? returnType.unitWaterShedValue
: returnType.middleRegionValue
}/0/1/SW`
} else if (returnType.partValue === 'G') {
url += `${page}/5/${returnType.envPartValue}/${returnType.sigunValue !== '0' ? returnType.sigunValue : returnType.sidoValue}/0/1/SW`
url += `${returnType.envPartValue}/${returnType.sigunValue !== '0' ? returnType.sigunValue : returnType.sidoValue}/0/1/SW`
if (filterData !== '0')
filteredFclt = flcts.filter((fclt: string) => {
return filterData.length == 2 ? fclt.slice(0, 2) === filterData : fclt.slice(0, 5) === filterData
})
} else {
url += `1/2/A/0/0/1/SW`
url += `A/0/0/1/SW`
}
if (searchNm && searchNm?.length > 0) {
url += "/" + searchNm
}
const pbnList = await postFectch(url, flcts, fetchType.COMMON);
const pbnList = await postFectch(`/prcsFclt/ruseInfo/1/${filteredFclt.length}/` + url, filteredFclt, fetchType.COMMON);
const checkRuseFcltList = searchNm && searchNm?.length > 0 ? pbnList.data.map((item) => item.bscFctCd) : filteredFclt
const getRuseList = await postFectch(
`/reuseFc/pubDetailList/${year}`,
flcts,
`/reuseFc/pubDetailPrfList/${fromDate}/${toDate}/${filterData}/${page}/5`,
checkRuseFcltList,
fetchType.WR
);
let count = 0;
const checkWrRegListRes = getRuseList.data;
const data: WaterReuseFacility[] = checkWrRegListRes.map(
(item: FcPrfType) => {
if (!item.prfList || item.prfList.length === 0) {
@@ -96,7 +110,6 @@ const hasuListFetch = async (
fclt.bscFctCd === item.pbnstRuseFcltId.substring(0, 11)
);
if (findData) {
count++;
return {
sido: findData?.sido || '-',
gugun: findData?.gugun || '-',
@@ -104,12 +117,12 @@ const hasuListFetch = async (
ruseUtztnFcltNm: item?.ruseUtztnFcltNm || '-',
pbnstRuseFcltId: item?.pbnstRuseFcltId || '-',
bscFctCd: findData?.bscFctCd || '-',
count
prfList: item.prfList,
}
}
}
).filter(Boolean);
return data;
return {data: data, count: getRuseList.count};
}
export const pbnstPrfmncSttnActionsExport: (set: any) => pbnstPrfmncSttnActions = (
@@ -175,29 +188,17 @@ export const pbnstPrfmncSttnActionsExport: (set: any) => pbnstPrfmncSttnActions
page,
returnType,
fcltNm,
fromDate,
toDate,
fclts);
// const bscFctCdList = prfmncRes.map((item: any) => {
// return item.bscFctCd;
// })
const bscFctCdList = prfmncRes
.map((item: any) => item.bscFctCd)
.filter((value, index, self) => self.indexOf(value) === index);
// const bscFctCdList = [...new Set(prfmncRes.map((item: any) => item.bscFctCd))];
const res = await postFectch(
`/reuseFc/pubDetailList/${fromDate}/${toDate}`,
bscFctCdList,
`wr`,
)
let inUsageSum = 0;
let outUsageSum = 0;
let year = "";
const yearsData = [] as any
res.data.forEach((item: any) => {
if (item.prfList.length === 0) {
prfmncRes.data.forEach((item: any) => {
if (!item.prfList || item.prfList.length === 0) {
const year: string = ""; // 연도 정보가 없으면 빈 문자열, 필요시 item에서 추출.
const yearVal: { [key: string]: any } = { year: year, pbnstRuseFcltId: item.pbnstRuseFcltId ?? "", ruseUtztnFcltNm: item.ruseUtztnFcltNm ?? "" };
yearVal[`${year}inUsage`] = 0;
@@ -205,7 +206,7 @@ export const pbnstPrfmncSttnActionsExport: (set: any) => pbnstPrfmncSttnActions
yearVal[`${year}total`] = 0;
yearsData.push(yearVal);
}
item.prfList.forEach((acc) => {
item.prfList?.forEach((acc: any) => {
year = acc.ym?.substring(0, 4) ?? "";
inUsageSum =
(acc.wshwtr ?? 0) + //조경용수
@@ -273,7 +274,7 @@ export const pbnstPrfmncSttnActionsExport: (set: any) => pbnstPrfmncSttnActions
// prfmncRes 정보 merge
const resData = Object.values(mergedMap).map((item: any) => {
const match = prfmncRes.find((res) => res.pbnstRuseFcltId === item.pbnstRuseFcltId);
const match = prfmncRes.data.find((res) => res.pbnstRuseFcltId === item.pbnstRuseFcltId);
return match ? { ...item, ...match } : item;
});
@@ -282,10 +283,10 @@ export const pbnstPrfmncSttnActionsExport: (set: any) => pbnstPrfmncSttnActions
pbnstPrfmncSttn: {
...state.pbnstPrfmncSttn,
// prfmncRes: prfmncRes,
prfmncResCount: fclts.length - 5,
prfmncResCount: prfmncRes.count,
isInit: false,
prfmncRes: resData,
rawData: res.data
rawData: prfmncRes.data
},
}));
} catch (errorHasu) {
@@ -95,43 +95,59 @@ const hasuListFetch = async (
year: string,
flcts: string[]
) => {
let url = `/prcsFclt/ruseInfo/`;
let url = ``;
let filteredFclt = flcts;
const filterData = reurnValue.sigunValue !== '0' ? reurnValue.sigunValue : reurnValue.sidoValue
if(filterData !== '0')
filteredFclt= flcts.filter((fclt: string) => {
return filterData.length==2 ?fclt.slice(0, 2) === filterData:fclt.slice(0, 5) === filterData
})
if (reurnValue.partValue === "A") {
url += `${page}/${total}/${reurnValue.partValue}/${
url += `${reurnValue.partValue}/${
// reurnValue.sidoValue ? reurnValue.sidoValue : reurnValue.sigunValue
reurnValue.sigunValue !== '0' ? reurnValue.sigunValue : reurnValue.sidoValue
}/0/1/SW`
if(filterData !== '0')
filteredFclt= flcts.filter((fclt: string) => {
return filterData.length==2 ?fclt.slice(0, 2) === filterData:fclt.slice(0, 5) === filterData
})
} else if (reurnValue.partValue === "R") {
url += `${page}/${total}/${reurnValue.partValue}/${reurnValue.regionValue
url += `${reurnValue.partValue}/${reurnValue.regionValue
? reurnValue.regionValue
: reurnValue.unitWaterShedValue
? reurnValue.unitWaterShedValue
: reurnValue.middleRegionValue
}/0/1/SW`
} else if (reurnValue.partValue === 'G') {
url += `${page}/${total}/${reurnValue.envPartValue}/${reurnValue.sigunValue !== '0' ? reurnValue.sigunValue : reurnValue.sidoValue}/0/1/SW`
url += `${reurnValue.envPartValue}/${reurnValue.sigunValue !== '0' ? reurnValue.sigunValue : reurnValue.sidoValue}/0/1/SW`
if(filterData !== '0')
filteredFclt= flcts.filter((fclt: string) => {
return filterData.length==2 ?fclt.slice(0, 2) === filterData:fclt.slice(0, 5) === filterData
})
} else {
url += `1/2/A/0/0/1/SW`
url += `A/0/0/1/SW`
}
if (searchNm && searchNm?.length > 0) {
url += "/" + searchNm
}
const pbnList = await postFectch(url, flcts, fetchType.COMMON);
const pbnList = await postFectch( `/prcsFclt/ruseInfo/1/${filteredFclt.length}/`+url, filteredFclt, fetchType.COMMON);
const checkRuseFcltList = searchNm && searchNm?.length > 0?pbnList.data.map((item)=> item.bscFctCd ):filteredFclt
const getRuseList = await postFectch(
`/reuseFc/pubDetailList/${year}`,
flcts,
`/reuseFc/pubDetailList/${year}/${filterData}/${page}/${total}`,
checkRuseFcltList,
fetchType.WR
);
const checkWrRegListRes = getRuseList.data;
const data: WaterReuseFacility[] = checkWrRegListRes.map(
(item: FcPrfType) => {
const findData = pbnList.data.find(
@@ -140,7 +156,6 @@ const hasuListFetch = async (
);
if (findData) {
const usage = item.prfList.reduce(
(acc, cur) => {
acc.inUsage +=
@@ -197,7 +212,11 @@ const hasuListFetch = async (
}
).filter(Boolean);
return data;
return {data:data, count:getRuseList.count};
};
export const pbnstSttnActionsExport: (set: any) => pbnstSttnActions = (
@@ -237,8 +256,7 @@ export const pbnstSttnActionsExport: (set: any) => pbnstSttnActions = (
fclts: string[]
) => {
try {
const pbnstSttnRes = await hasuListFetch(
page,
total,
@@ -250,7 +268,7 @@ export const pbnstSttnActionsExport: (set: any) => pbnstSttnActions = (
// if (Number(total) > 9000) {
if (isExcel) {
const pbnstExcel = excelPbnstSttnParsing(pbnstSttnRes);
const pbnstExcel = excelPbnstSttnParsing(pbnstSttnRes.data);
set((state: pbnstSttnState) => {
return {
...state,
@@ -267,8 +285,8 @@ export const pbnstSttnActionsExport: (set: any) => pbnstSttnActions = (
...state,
pbnstSttn: {
...state.pbnstSttn,
pbnstSttnRes: pbnstSttnRes,
pbnstSttnResCount: pbnstSttnRes.length
pbnstSttnRes: pbnstSttnRes.data,
pbnstSttnResCount: pbnstSttnRes.count
// isInit: false,
},
};
@@ -295,13 +313,14 @@ export const pbnstSttnActionsExport: (set: any) => pbnstSttnActions = (
fclts
);
set((state: pbnstSttnState) => {
return {
...state,
pbnstSttn: {
...state.pbnstSttn,
pbnstSttnRes: pbnstSttnRes,
pbnstSttnResCount: pbnstSttnRes.length,
pbnstSttnRes: pbnstSttnRes.data,
pbnstSttnResCount: pbnstSttnRes.count,
isInit: false,
pbnstDetail: {} as customPbnst
},
@@ -365,8 +384,8 @@ export const pbnstSttnActionsExport: (set: any) => pbnstSttnActions = (
...state,
pbnstSttn: {
...state.pbnstSttn,
pbnstSearchData: pbnstSttnRes,
pbnstSttnResCount: pbnstSttnRes.length,
pbnstSearchData: pbnstSttnRes.data,
pbnstSttnResCount: pbnstSttnRes.count,
},
};
});
@@ -488,16 +488,6 @@ export function PbnstBuseForm({
/>
</div>
{/* <MngRegFormDetail
formList={ruseWaterQulityList}
h1Title={`하수처리수 재이용시설 보증수질 `}
subTitle="※재처리시설이 있는 경우만 작성"
form={form}
moClass="grid grid-cols-12 gap-4"
sonClass="col-span-4"
indexMng={indexMng}
indexBiz={indexBiz}
/> */}
<div>
<BuseWaterQulity
@@ -17,7 +17,6 @@ export class LoginApiService implements LoginService {
public async login(payload: ILogin): Promise<void> {
try {
console.log(' ENDPOINT.USER_SERVICE.LOGIN ', ENDPOINT.USER_SERVICE.LOGIN)
const response = await fetch( PROXY_HOST+ ENDPOINT.USER_SERVICE.LOGIN, {
method: "POST",
body: JSON.stringify({
@@ -189,7 +189,7 @@ export default React.memo(function GisTree({ checkedNodes = [], setCheckedNodes
};
const handleLayerImgClick = (nodeNm, nodeId, layerNm) => {
if(!checked.includes(nodeId)) alert('시설을 선택해주세요')
else onLayerIconClick(layerNm)
else onLayerIconClick(nodeNm)
}
if (!treeData || treeData.length === 0) return null;
@@ -130,8 +130,6 @@ GisOlLayer.prototype = {
strategy: all,
});
return source;
return source;
},
/**
* [사용]WFS 레이어 생성