wr: 지도점검결과 중수도 수정
This commit is contained in:
@@ -65,7 +65,8 @@ export default function Page() {
|
||||
rswtChkDelete, // 중수도시설 지도점검 선택 건 삭제
|
||||
rswtrChkExcelDownload, // 중수도시설 지도점검 엑셀 양식/데이터 조회
|
||||
rswtChkHeadChange, // 중수도시설 테이블 헤더 선택 상태 변경
|
||||
getLaeSeCdCheck // 사용자 관할 기관 코드 조회
|
||||
getLaeSeCdCheck, // 사용자 관할 기관 코드 조회
|
||||
getCommonCodesByKeys, // 지도점검 화면에서 필요한 공통코드 보강 조회
|
||||
} = useWrStore((state) => {
|
||||
return state;
|
||||
});
|
||||
@@ -93,8 +94,15 @@ export default function Page() {
|
||||
|
||||
useEffect(() => {
|
||||
getLaeSeCdCheck();
|
||||
const hasRequiredCodes =
|
||||
code.rainRswtMng.length > 0 &&
|
||||
code.rainFcltFlowRate.length > 0 &&
|
||||
code.dmdUszCd.length > 0;
|
||||
if (!hasRequiredCodes) {
|
||||
void getCommonCodesByKeys(["WR014", "WR015", "WR016"]);
|
||||
}
|
||||
useInitRef.current = true; // getLaeSeCdCheck()를 호출한 뒤 true로 바뀜
|
||||
}, []);
|
||||
}, [getLaeSeCdCheck, getCommonCodesByKeys, code.rainRswtMng, code.rainFcltFlowRate, code.dmdUszCd]);
|
||||
|
||||
|
||||
|
||||
@@ -102,75 +110,46 @@ export default function Page() {
|
||||
if (searchYear)
|
||||
if (selFcltDiv === "RNB") { // 빗물
|
||||
if (fcltNm) {
|
||||
rainChkNmSearch(
|
||||
rainPageNation,
|
||||
rainPageSize,
|
||||
searchYear,
|
||||
laeSeCd,
|
||||
fcltNm
|
||||
);
|
||||
rainChkNmSearch( rainPageNation, rainPageSize, searchYear, laeSeCd, fcltNm );
|
||||
setRainPageNation(1);
|
||||
} else {
|
||||
rainChkInit(rainPageNation, rainPageSize, searchYear, laeSeCd);
|
||||
}
|
||||
} else { // 중수도
|
||||
if (fcltNm) {
|
||||
rswtChkNmSearch(
|
||||
rswtPageNation,
|
||||
rswtPageSize,
|
||||
searchYear,
|
||||
laeSeCd,
|
||||
fcltNm
|
||||
);
|
||||
rswtChkNmSearch( rswtPageNation, rswtPageSize, searchYear, laeSeCd, fcltNm );
|
||||
setRswtPageNation(1);
|
||||
} else {
|
||||
rswtChkgdnInit(rswtPageNation, rswtPageSize, searchYear, laeSeCd);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
const rainPageChange = (pageNo: number) => {
|
||||
if (pageNo > 0) {
|
||||
setRainPageNation(pageNo);
|
||||
if (fcltNm) {
|
||||
rainChkNmSearch(
|
||||
pageNo,
|
||||
rainPageSize,
|
||||
searchYear,
|
||||
laeSeCd,
|
||||
fcltNm
|
||||
);
|
||||
rainChkNmSearch( pageNo, rainPageSize, searchYear, laeSeCd, fcltNm );
|
||||
} else {
|
||||
rainChkInit(pageNo, rainPageSize, searchYear, laeSeCd);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
const rswtPageChange = (pageNo: number) => {
|
||||
if (pageNo > 0) {
|
||||
setRswtPageNation(pageNo);
|
||||
if (fcltNm) {
|
||||
rswtChkNmSearch(
|
||||
pageNo,
|
||||
rswtPageSize,
|
||||
searchYear,
|
||||
laeSeCd,
|
||||
fcltNm
|
||||
);
|
||||
rswtChkNmSearch( pageNo, rswtPageSize, searchYear, laeSeCd, fcltNm );
|
||||
} else {
|
||||
rswtChkgdnInit(pageNo, rswtPageSize, searchYear, laeSeCd);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
|
||||
useEffect(() => {
|
||||
if (useInitRef.current == true && laeSeCd !== undefined&& !rainChkgdn.isInit) {
|
||||
rainChkInit(
|
||||
1,
|
||||
rainPageSize,
|
||||
new Date().getFullYear().toString(),
|
||||
laeSeCd
|
||||
);
|
||||
rainChkInit( 1, rainPageSize, new Date().getFullYear().toString(), laeSeCd );
|
||||
isRainSttn(false);
|
||||
setIsModal({ data: {}, open: false });
|
||||
setIsRegExcel(false);
|
||||
@@ -179,12 +158,7 @@ export default function Page() {
|
||||
|
||||
useEffect(() => {
|
||||
if (useInitRef.current == true && laeSeCd !== undefined&&!rswtChkgdn.isInit) {
|
||||
rswtChkgdnInit(
|
||||
1,
|
||||
rswtPageSize,
|
||||
new Date().getFullYear().toString(),
|
||||
laeSeCd
|
||||
);
|
||||
rswtChkgdnInit( 1, rswtPageSize, new Date().getFullYear().toString(), laeSeCd );
|
||||
setIsModal({ data: {}, open: false });
|
||||
setIsRegExcel(false);
|
||||
}
|
||||
@@ -192,38 +166,24 @@ export default function Page() {
|
||||
|
||||
useEffect(() => {
|
||||
if (rswtChkgdn.excelList[0] && rswtChkgdn.excelList[0]?.data.length > 1) {
|
||||
excelArrayDownload(
|
||||
"중수도시설 지도점검",
|
||||
"sample_rs_chk.xlsx",
|
||||
rswtChkgdn.excelList
|
||||
);
|
||||
excelArrayDownload( "중수도시설 지도점검", "sample_rs_chk.xlsx", rswtChkgdn.excelList );
|
||||
}
|
||||
}, [rswtChkgdn.excelList]);
|
||||
|
||||
useEffect(() => {
|
||||
excelDownload(
|
||||
rainChkgdn.excelList,
|
||||
"빗물이용시설 지도점검",
|
||||
"sample_rainy.xlsx",
|
||||
"A1:AN1",
|
||||
2
|
||||
);
|
||||
rainChkgdn.excelList, "빗물이용시설 지도점검", "sample_rainy.xlsx", "A1:AN1", 2 );
|
||||
}, [rainChkgdn.excelList]);
|
||||
|
||||
const excelClick = useCallback(() => {
|
||||
if (selFcltDiv === "RNB") {
|
||||
rainChkExcelDownload(code.cityCd, code.sggCd,laeSeCd);
|
||||
} else {
|
||||
rswtrChkExcelDownload(code.cityCd, code.sggCd,laeSeCd);
|
||||
}
|
||||
}, [
|
||||
rainChkExcelDownload,
|
||||
rswtrChkExcelDownload,
|
||||
code.cityCd,
|
||||
code.sggCd,
|
||||
selFcltDiv,
|
||||
laeSeCd
|
||||
]);
|
||||
if (selFcltDiv === "RNB") {
|
||||
rainChkExcelDownload(code.cityCd, code.sggCd,laeSeCd);
|
||||
} else {
|
||||
rswtrChkExcelDownload(code.cityCd, code.sggCd,laeSeCd);
|
||||
}
|
||||
},
|
||||
[ rainChkExcelDownload, rswtrChkExcelDownload, code.cityCd, code.sggCd, selFcltDiv, laeSeCd ]
|
||||
);
|
||||
|
||||
const handleClick = useCallback(
|
||||
(data: any) => {
|
||||
@@ -264,6 +224,7 @@ export default function Page() {
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
const chkUpdateTable = async (selFcltDiv: string) => {
|
||||
if (selFcltDiv === "RNB") {
|
||||
if (updateRainDetail && updateRainDetail.length > 0) {
|
||||
|
||||
@@ -40,7 +40,6 @@ const codeMApping = {
|
||||
};
|
||||
export const getCommonUpCd = async (set: any) => {
|
||||
try {
|
||||
let lwCdCode: Record<string, SelectDataType[]> = {};
|
||||
const upCd = await getFetchWithCount(
|
||||
fetchType.CS,
|
||||
"/cms-service/api/v1/up-codes?keyword=&upCd=&cdSe=&useYn=Y&siteId=WR&page=0&size=100&sort=string"
|
||||
@@ -50,24 +49,9 @@ export const getCommonUpCd = async (set: any) => {
|
||||
.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;
|
||||
await fetchCommonCodesByKeys(upWrCode);
|
||||
|
||||
const lwCd = await getFetchWithCount(
|
||||
fetchType.CS,
|
||||
`/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,
|
||||
}));
|
||||
})
|
||||
);
|
||||
lwCdCode = lwCds;
|
||||
const lwCdCode = lwCds;
|
||||
set((state: comCodeState) => ({
|
||||
code: {
|
||||
...state.code,
|
||||
@@ -78,6 +62,8 @@ export const getCommonUpCd = async (set: any) => {
|
||||
pplLenght: lwCdCode["pplLenght"] ?? [],
|
||||
dmdUszCd: lwCdCode["dmdUszCd"] ?? [],
|
||||
sewageOutFclttUse: lwCdCode["sewageOutFclttUse"] ?? [],
|
||||
rainRswtMng: lwCdCode["rainRswtMng"] ?? [],
|
||||
rainFcltFlowRate: lwCdCode["rainFcltFlowRate"] ?? [],
|
||||
ruseMngMtd: lwCdCode["ruseMngMtd"] ?? [],
|
||||
rusePrcsMthdCd: lwCdCode["rusePrcsMthdCd"] ?? [],
|
||||
erctUswtrPrcsMeth: lwCdCode["erctUswtrPrcsMeth"] ?? [],
|
||||
@@ -93,6 +79,30 @@ export const getCommonUpCd = async (set: any) => {
|
||||
console.log("com code error ", e);
|
||||
}
|
||||
};
|
||||
|
||||
const fetchCommonCodesByKeys = async (keys: string[]) => {
|
||||
const targets = [...new Set(keys)].filter(
|
||||
(cd) => Boolean(codeMApping[cd as keyof typeof codeMApping])
|
||||
);
|
||||
|
||||
await Promise.all(
|
||||
targets.map(async (cd) => {
|
||||
const mapping = codeMApping[cd as keyof typeof codeMApping];
|
||||
if (!mapping) return;
|
||||
|
||||
const lwCd = await getFetchWithCount(
|
||||
fetchType.CS,
|
||||
`/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,
|
||||
}));
|
||||
})
|
||||
);
|
||||
};
|
||||
//물재이용 주소 코드: devU01TX0FVVEgyMDI1MDgyNTEwMzkwNDExNjEwNTM=
|
||||
export const buildingType = {
|
||||
RST: "RST",
|
||||
@@ -219,41 +229,42 @@ export const getEnvPartCd = async (set: any) => {
|
||||
|
||||
export type comCodeState = {
|
||||
code: {
|
||||
isInit: boolean;
|
||||
chBuCd: SelectDataType[];
|
||||
rainFcltCd: SelectDataType[];
|
||||
bdstUsgCd: SelectDataType[];
|
||||
cityCd: SelectDataType[];
|
||||
sggCd: SelectDataType[];
|
||||
rvbsnCd: SelectDataType[];
|
||||
mdmbsnCd: SelectDataType[];
|
||||
lgbsnCd: SelectDataType[];
|
||||
lclgvrnmntCd: EnvPartSelectDataType[];
|
||||
orgwtKndCd: SelectDataType[];
|
||||
yn: SelectDataType[];
|
||||
pplQulity: SelectDataType[];
|
||||
pplLenght: SelectDataType[];
|
||||
dmdUszCd: SelectDataType[];
|
||||
sewageOutFclttUse: SelectDataType[];
|
||||
isInit: boolean; // 초기화 여부
|
||||
chBuCd: SelectDataType[]; // 변경사업코드
|
||||
rainFcltCd: SelectDataType[]; // 빗물시설코드
|
||||
bdstUsgCd: SelectDataType[]; // 건물용도코드
|
||||
cityCd: SelectDataType[]; // 시도코드
|
||||
sggCd: SelectDataType[]; // 시군구코드
|
||||
rvbsnCd: SelectDataType[]; // 대권역코드
|
||||
mdmbsnCd: SelectDataType[]; // 중권역코드
|
||||
lgbsnCd: SelectDataType[]; // 단위유역(대영역)코드
|
||||
lclgvrnmntCd: EnvPartSelectDataType[]; // 지방환경청코드
|
||||
orgwtKndCd: SelectDataType[]; // 원수종류코드
|
||||
yn: SelectDataType[]; // 여부코드
|
||||
pplQulity: SelectDataType[]; // 관저질
|
||||
pplLenght: SelectDataType[]; // 관연장
|
||||
dmdUszCd: SelectDataType[]; // 용도별코드
|
||||
sewageOutFclttUse: SelectDataType[]; // 하수재이용 장외코드
|
||||
rainRswtMng: SelectDataType[]; // 운영관리형태코드
|
||||
rainFcltFlowRate: SelectDataType[]; // 유량측정방법코드
|
||||
buildingType: {
|
||||
RST: string;
|
||||
RNB: string;
|
||||
HTB: string;
|
||||
};
|
||||
ruseMngMtd: SelectDataType[];
|
||||
ruseSeCd: SelectDataType[];
|
||||
ruseBizMthdCd: SelectDataType[];
|
||||
rusePrcsMthdCd: SelectDataType[];
|
||||
erctUswtrPrcsMeth: SelectDataType[];
|
||||
bdstFilterYn: SelectDataType[];
|
||||
bdstIncenYn: SelectDataType[];
|
||||
bdstGrntchClass: SelectDataType[];
|
||||
// rswtPrscCdMthdCd: SelectDataType[];
|
||||
htdPowerMthdCd: SelectDataType[];
|
||||
htdUtztnUsgCd: SelectDataType[];
|
||||
rswtBdstType: SelectDataType[];
|
||||
bdstTotalUsgType: SelectDataType[];
|
||||
userSiSggCd: string;
|
||||
RST: string; // 중수도시설 구분
|
||||
RNB: string; // 빗물이용시설 구분
|
||||
HTB: string; // 온배수시설 구분
|
||||
}; // 시설구분
|
||||
ruseMngMtd: SelectDataType[]; // 재이용관리방식코드
|
||||
ruseSeCd: SelectDataType[]; // 재이용구분코드
|
||||
ruseBizMthdCd: SelectDataType[]; // 재이용사업방식코드
|
||||
rusePrcsMthdCd: SelectDataType[]; // 재이용처리공법코드
|
||||
erctUswtrPrcsMeth: SelectDataType[]; // 하수처리공법코드
|
||||
bdstFilterYn: SelectDataType[]; // 여과시설여부코드
|
||||
bdstIncenYn: SelectDataType[]; // 인센티브여부코드
|
||||
bdstGrntchClass: SelectDataType[]; // 보조금지원대상분류코드
|
||||
htdPowerMthdCd: SelectDataType[]; // 온배수발전방식코드
|
||||
htdUtztnUsgCd: SelectDataType[]; // 온배수이용용도코드
|
||||
rswtBdstType: SelectDataType[]; // 중수도건물유형코드
|
||||
bdstTotalUsgType: SelectDataType[]; // 전체건물용도유형코드
|
||||
userSiSggCd: string; // 사용자 시군구코드
|
||||
};
|
||||
};
|
||||
|
||||
@@ -277,6 +288,8 @@ export const comCodeStateExport: comCodeState = {
|
||||
yn: yn,
|
||||
dmdUszCd: lwCds["dmdUszCd"] ?? [],
|
||||
sewageOutFclttUse: lwCds["sewageOutFclttUse"] ?? [],
|
||||
rainRswtMng: lwCds["rainRswtMng"] ?? [],
|
||||
rainFcltFlowRate: lwCds["rainFcltFlowRate"] ?? [],
|
||||
buildingType: buildingType,
|
||||
ruseMngMtd: lwCds["ruseMngMtd"] ?? [],
|
||||
ruseSeCd: ruseSeCd,
|
||||
@@ -298,10 +311,51 @@ export const comCodeStateExport: comCodeState = {
|
||||
export type comCodeActions = {
|
||||
returnCodeText: (val: string, codeName: string) => string;
|
||||
returnTextCode: (text: string, codeName: string) => string;
|
||||
getCommonCodesByKeys: (keys: string[]) => Promise<void>;
|
||||
};
|
||||
|
||||
export const codeActionExport: (set: any, get:any) => comCodeActions = (set: any, get:any) => {
|
||||
return {
|
||||
getCommonCodesByKeys: async (keys: string[]) => {
|
||||
try {
|
||||
await fetchCommonCodesByKeys(keys);
|
||||
const lwCdCode = lwCds;
|
||||
|
||||
set((state: comCodeState) => ({
|
||||
code: {
|
||||
...state.code,
|
||||
rainFcltCd: lwCdCode["rainFcltCd"] ?? state.code.rainFcltCd,
|
||||
bdstUsgCd: lwCdCode["bdstUsgCd"] ?? state.code.bdstUsgCd,
|
||||
orgwtKndCd: lwCdCode["orgwtKndCd"] ?? state.code.orgwtKndCd,
|
||||
pplQulity: lwCdCode["pplQulity"] ?? state.code.pplQulity,
|
||||
pplLenght: lwCdCode["pplLenght"] ?? state.code.pplLenght,
|
||||
dmdUszCd: lwCdCode["dmdUszCd"] ?? state.code.dmdUszCd,
|
||||
sewageOutFclttUse:
|
||||
lwCdCode["sewageOutFclttUse"] ?? state.code.sewageOutFclttUse,
|
||||
rainRswtMng: lwCdCode["rainRswtMng"] ?? state.code.rainRswtMng,
|
||||
rainFcltFlowRate:
|
||||
lwCdCode["rainFcltFlowRate"] ?? state.code.rainFcltFlowRate,
|
||||
ruseMngMtd: lwCdCode["ruseMngMtd"] ?? state.code.ruseMngMtd,
|
||||
rusePrcsMthdCd:
|
||||
lwCdCode["rusePrcsMthdCd"] ?? state.code.rusePrcsMthdCd,
|
||||
erctUswtrPrcsMeth:
|
||||
lwCdCode["erctUswtrPrcsMeth"] ?? state.code.erctUswtrPrcsMeth,
|
||||
bdstGrntchClass:
|
||||
lwCdCode["bdstGrntchClass"] ?? state.code.bdstGrntchClass,
|
||||
htdPowerMthdCd:
|
||||
lwCdCode["htdPowerMthdCd"] ?? state.code.htdPowerMthdCd,
|
||||
htdUtztnUsgCd:
|
||||
lwCdCode["htdUtztnUsgCd"] ?? state.code.htdUtztnUsgCd,
|
||||
rswtBdstType: lwCdCode["rswtBdstType"] ?? state.code.rswtBdstType,
|
||||
bdstTotalUsgType:
|
||||
lwCdCode["bdstUsgCd"]?.concat(lwCdCode["rswtBdstType"] || []) ??
|
||||
state.code.bdstTotalUsgType,
|
||||
},
|
||||
}));
|
||||
} catch (e) {
|
||||
console.log("selected common code error ", e);
|
||||
}
|
||||
},
|
||||
returnCodeText: (val: string, codeName: string) => {
|
||||
|
||||
const codeList = get().code[codeName] || [];
|
||||
|
||||
@@ -270,35 +270,25 @@ export const rswtExcelDataCheck = (
|
||||
issues: string[]
|
||||
) => {
|
||||
// const chkMngType = { "01": "위탁", "02": "자체" };
|
||||
|
||||
//rainRswtMng: SelectDataType[]; // 운영관리형태코드
|
||||
// console.log(rswtChkgdData);
|
||||
rswtChkgdData.forEach((rswt: any) => {
|
||||
const defaultMessage = `*중수도 수질 [NO: ${rswt.bdstRuseFcltSn}, 점검일: ${rswt.chckYmd}, 이용용도: ${codeToText(rswt.utztnUsgCd ,"dmdUszCd")??rswt.utztnUsgCd}] 항목에서 `;
|
||||
|
||||
if (rswt.chckYmd && isInvalidDate(rswt.chckYmd)) {
|
||||
issues.push(defaultMessage + `점검일: 날짜 형식 아님 (${rswt.chckYmd})`);
|
||||
}
|
||||
// if (rswt.operMngCd?.length > 1 && !chkMngType[rswt.operMngCd]) {
|
||||
// issues.push(
|
||||
// defaultMessage +
|
||||
// `운영관리형태: 위탁 혹은 자체만 허용 (${rswt.operMngCd})`
|
||||
// );
|
||||
// }
|
||||
// if (rswt.utztnUsgCd?.length > 2 && !codeToText(rswt.utztnUsgCd, "dmdUszCd")) {
|
||||
// issues.push(
|
||||
// defaultMessage + `이용용도: 허용되지 않은 값 (${rswt.utztnUsgCd})`
|
||||
// );
|
||||
// }
|
||||
if (rswt.operMngCd?.length > 1 && !codeToText(rswt.operMngCd, "rainRswtMng")) {
|
||||
issues.push( defaultMessage + `운영관리형태: 위탁 혹은 자체만 허용 (${rswt.operMngCd})` );
|
||||
}
|
||||
if (rswt.utztnUsgCd?.length > 2 && !codeToText(rswt.utztnUsgCd, "dmdUszCd")) {
|
||||
issues.push( defaultMessage + `이용용도: 허용되지 않은 값 (${rswt.utztnUsgCd})` );
|
||||
}
|
||||
if (rswt.anlOperCst.length > 2 && isInvalidNumber(rswt.anlOperCst)) {
|
||||
|
||||
issues.push(
|
||||
defaultMessage +
|
||||
` 연간운영비(원/년): 숫자 형식 아님 (${rswt.anlOperCst})`
|
||||
);
|
||||
issues.push( defaultMessage + ` 연간운영비(원/년): 숫자 형식 아님 (${rswt.anlOperCst})` );
|
||||
}
|
||||
if (rswt.prcsCpct.length > 2 && isInvalidNumber(rswt.prcsCpct)) {
|
||||
issues.push(
|
||||
defaultMessage + ` 처리용량(m³): 숫자 형식 아님 (${rswt.prcsCpct})`
|
||||
);
|
||||
issues.push( defaultMessage + ` 처리용량(m³): 숫자 형식 아님 (${rswt.prcsCpct})` );
|
||||
}
|
||||
// if (
|
||||
// rswt.spwtPositn.length > 1 &&
|
||||
@@ -313,55 +303,31 @@ export const rswtExcelDataCheck = (
|
||||
if (rswt?.rswtrPollutions && rswt?.rswtrPollutions.length > 0) {
|
||||
rswt.rswtrPollutions.forEach((pol) => {
|
||||
if (isInvalidNumber(pol.grssClfgUswtr)) {
|
||||
issues.push(
|
||||
defaultMessage +
|
||||
`${pol.node}분기_총대장균군수: 숫자 형식 아님 (${pol.grssClfgUswtr})`
|
||||
);
|
||||
issues.push( defaultMessage + `${pol.node}분기_총대장균군수: 숫자 형식 아님 (${pol.grssClfgUswtr})` );
|
||||
}
|
||||
if (isInvalidNumber(pol.combResdch)) {
|
||||
issues.push(
|
||||
defaultMessage +
|
||||
`${pol.node}분기_결합잔류염소: 숫자 형식 아님 (${pol.combResdch})`
|
||||
);
|
||||
issues.push( defaultMessage + `${pol.node}분기_결합잔류염소: 숫자 형식 아님 (${pol.combResdch})` );
|
||||
}
|
||||
if (isInvalidNumber(pol.trbt)) {
|
||||
issues.push(
|
||||
defaultMessage +
|
||||
`${pol.node}분기_탁도: 숫자 형식 아님 (${pol.trbt})`
|
||||
);
|
||||
issues.push( defaultMessage + `${pol.node}분기_탁도: 숫자 형식 아님 (${pol.trbt})` );
|
||||
}
|
||||
if (isInvalidNumber(pol.bod)) {
|
||||
issues.push(
|
||||
defaultMessage + `${pol.node}분기_BOD: 숫자 형식 아님 (${pol.bod})`
|
||||
);
|
||||
issues.push( defaultMessage + `${pol.node}분기_BOD: 숫자 형식 아님 (${pol.bod})` );
|
||||
}
|
||||
if (isInvalidNumber(pol.crmty)) {
|
||||
issues.push(
|
||||
defaultMessage +
|
||||
`${pol.node}분기_색도: 숫자 형식 아님 (${pol.crmty})`
|
||||
);
|
||||
issues.push( defaultMessage + `${pol.node}분기_색도: 숫자 형식 아님 (${pol.crmty})` );
|
||||
}
|
||||
if (isInvalidNumber(pol.tph)) {
|
||||
issues.push(
|
||||
defaultMessage + `${pol.node}분기_T-P: 숫자 형식 아님 (${pol.tph})`
|
||||
);
|
||||
issues.push( defaultMessage + `${pol.node}분기_T-P: 숫자 형식 아님 (${pol.tph})` );
|
||||
}
|
||||
if (isInvalidNumber(pol.tn)) {
|
||||
issues.push(
|
||||
defaultMessage + `${pol.node}분기_T-N: 숫자 형식 아님 (${pol.tn})`
|
||||
);
|
||||
issues.push( defaultMessage + `${pol.node}분기_T-N: 숫자 형식 아님 (${pol.tn})` );
|
||||
}
|
||||
if (pol.ph?.length > 1 && isInvalidNumber(pol.ph)) {
|
||||
issues.push(
|
||||
defaultMessage + `${pol.node}분기_PH: 숫자 형식 아님 (${pol.ph})`
|
||||
);
|
||||
if (isInvalidNumber(pol.ph)) {
|
||||
issues.push( defaultMessage + `${pol.node}분기_PH: 숫자 형식 아님 (${pol.ph})` );
|
||||
}
|
||||
|
||||
if (isInvalidNumber(pol.clIonQnt)) {
|
||||
issues.push(
|
||||
defaultMessage +
|
||||
`${pol.node}분기_염소이온량: 숫자 형식 아님 (${pol.clIonQnt})`
|
||||
);
|
||||
if (isInvalidNumber(pol.clIonQnt)) {
|
||||
issues.push( defaultMessage + `${pol.node}분기_염소이온량: 숫자 형식 아님 (${pol.clIonQnt})` );
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -369,19 +335,43 @@ export const rswtExcelDataCheck = (
|
||||
if (rswt?.rswtrDetails && rswt?.rswtrDetails.length > 0) {
|
||||
rswt?.rswtrDetails.forEach((key) => {
|
||||
if (key.levyAmt?.length > 1 && isInvalidNumber(key.levyAmt)) {
|
||||
issues.push(
|
||||
defaultMessage +
|
||||
`과태료부과금액(천원): 숫자 형식 아님 (${key.levyAmt})`
|
||||
);
|
||||
issues.push( defaultMessage + `과태료부과금액(천원): 숫자 형식 아님 (${key.levyAmt})` );
|
||||
}
|
||||
if (key.vltnDt?.length > 2 && isInvalidDate(key.vltnDt)) {
|
||||
issues.push(
|
||||
defaultMessage +
|
||||
`과태료 부과일(위반일): 날짜 형식 아님 (${key.vltnDt})`
|
||||
);
|
||||
issues.push( defaultMessage + `과태료 부과일(위반일): 날짜 형식 아님 (${key.vltnDt})` );
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
const polutionUseCodes = new Set<string>(
|
||||
(rswt?.rswtrPollutions ?? [])
|
||||
.map((pol) => pol.utztnUsgCd)
|
||||
.filter((code): code is string => Boolean(code))
|
||||
);
|
||||
const guideDetailCodes = new Set<string>(
|
||||
(rswt?.guideDetails ?? [])
|
||||
.map((detail) => detail.utztnUsgCd)
|
||||
.filter((code): code is string => Boolean(code))
|
||||
);
|
||||
|
||||
polutionUseCodes.forEach((code) => {
|
||||
if (!guideDetailCodes.has(code)) {
|
||||
issues.push(
|
||||
defaultMessage +
|
||||
`중수도_점검결과_수질 sheet의 이용용도에 대응하는 중수도_점검결과_이용량현황sheet의 이용용도가 없습니다.`
|
||||
);
|
||||
}
|
||||
});
|
||||
|
||||
guideDetailCodes.forEach((code) => {
|
||||
if (!polutionUseCodes.has(code)) {
|
||||
issues.push(
|
||||
defaultMessage +
|
||||
`중수도_점검결과_이용량현황sheet의 이용용도에 대응하는 중수도_점검결과_수질sheet의 이용용도가 없습니다.`
|
||||
);
|
||||
}
|
||||
});
|
||||
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
@@ -53,29 +53,14 @@ export type rswtChkgdnState = {
|
||||
isInit: boolean; // 초기 목록 조회 완료 여부
|
||||
isSttn: boolean; // 테이블 선택/상세 상태 제어 플래그
|
||||
isLoading:boolean; // 등록/업로드 등 비동기 처리 진행 여부
|
||||
rswtChkCount: number; // 메인 목록 전체 건수
|
||||
rswtChkCount: number; // 메인 목록 전체 건수 : 시설의 건수임
|
||||
};
|
||||
};
|
||||
|
||||
type rswtChkgdnActions = {
|
||||
rswtChkgdnInit: (
|
||||
pageNo: number,
|
||||
cnt: number,
|
||||
year: string,
|
||||
sggCd: string
|
||||
) => void;
|
||||
rswtChkNmSearch: (
|
||||
pageNo: number,
|
||||
cnt: number,
|
||||
year: string,
|
||||
sggCd: string,
|
||||
txt: string
|
||||
) => void;
|
||||
rswtrChkExcelDownload(
|
||||
sidoCode: SelectDataType[],
|
||||
sggCode: SelectDataType[],
|
||||
sggCd: string,
|
||||
): Promise<void>;
|
||||
rswtChkgdnInit: ( pageNo: number, cnt: number, year: string, sggCd: string ) => void;
|
||||
rswtChkNmSearch: ( pageNo: number, cnt: number, year: string, sggCd: string, txt: string ) => void;
|
||||
rswtrChkExcelDownload( sidoCode: SelectDataType[], sggCode: SelectDataType[], sggCd: string, ): Promise<void>;
|
||||
rswtChkExceDataUpload: (excelData: rswtChkZodType[],laeSeCd:string) => Promise<string>;
|
||||
rswtChkDelete: (chkgdnSns: number[] ,year:string) => Promise<string>;
|
||||
rswtChkDetilsUpdate: (rswtChkDetails: rswtrChkDetailsZodType[] ,year:string) => Promise<string>;
|
||||
@@ -189,8 +174,7 @@ export const rswtChkgdnActionsExport: (set: any) => rswtChkgdnActions = (
|
||||
// set((state: rswtChkgdnType) => ({ rswtChkgdn: { ...state.rswtChkgdn, isLoading: true } }));
|
||||
try {
|
||||
const rswtChkRes = await initFetch(pageNo, cnt, year, sggCd);
|
||||
|
||||
|
||||
// console.log(rswtChkRes);
|
||||
set((state: rswtChkgdnState) => ({
|
||||
...state,
|
||||
rswtChkgdn: {
|
||||
@@ -246,7 +230,7 @@ export const rswtChkgdnActionsExport: (set: any) => rswtChkgdnActions = (
|
||||
rswtChkExceDataUpload: async (excelData: rswtChkZodType[],laeSeCd:string) => {
|
||||
const successMessage = "지도점검 등록이 완료되었습니다.";
|
||||
const failMessage = "지도점검 등록이 실패되었습니다.";
|
||||
console.log(excelData);
|
||||
// console.log(excelData);
|
||||
try {
|
||||
set((state: rswtChkgdnType) => (
|
||||
{ rswtChkgdn: { ...state.rswtChkgdn, isLoading: true } }));
|
||||
|
||||
@@ -112,6 +112,7 @@ export const chRowspanTable = (
|
||||
// rowspan된 셀 렌더링 여부 추적용
|
||||
const renderedMap = new Map<string, Set<number>>();
|
||||
|
||||
// console.log(makeTableData);
|
||||
return (
|
||||
<>
|
||||
{/* {makeTableData.map((row, rowIndex) => ( */}
|
||||
|
||||
@@ -246,7 +246,7 @@ export const filePickedArray=(oFile: File, headerNum:number=0):Promise<JSON[] |
|
||||
wb.SheetNames.forEach(function (sheetName) {
|
||||
const sheet = wb.Sheets[sheetName];
|
||||
if (sheet) {
|
||||
console.log(sheet)
|
||||
// console.log(sheet)
|
||||
jsonXls = XLSX.utils.sheet_to_json(sheet, { range: headerNum, raw:false }) as unknown as JSON;
|
||||
arrayXls.push(jsonXls)
|
||||
} else {
|
||||
|
||||
Reference in New Issue
Block a user