wr: 중수도시설 지도점검결과 등록

This commit is contained in:
2026-04-06 18:21:15 +09:00
parent bd85a3c3aa
commit dd5ff0f7f8
3 changed files with 61 additions and 55 deletions
@@ -1,4 +1,8 @@
"use client";
/**
* 재이용실적등록 > 지도점검결과등록
*/
"use client";
import { useWrStore } from "@/app/store";
import { btnClass } from "@/app/store/common/code";
@@ -43,25 +47,25 @@ import { useTranslation } from "react-i18next";
export default function Page() {
const {
auth,
code,
rainChkgdn,
rswtChkgdn,
rainChkInit,
rainChkDetilUpdate,
rainChkDelete,
rainChkExcelDownload,
rainChkHeadChange,
rainChkNmSearch,
isRainSttn,
rswtChkgdnInit,
rswtChkNmSearch,
rswtChkPolInit,
rswtChkDetilsUpdate,
rswtChkDelete,
rswtrChkExcelDownload,
rswtChkHeadChange,
getLaeSeCdCheck
auth, // 사용자 권한 및 로그인 사용자 기준 정보
code, // 공통 코드 및 지역 코드 정보
rainChkgdn, // 빗물이용시설 지도점검 화면 상태
rswtChkgdn, // 중수도시설 지도점검 화면 상태
rainChkInit, // 빗물이용시설 지도점검 목록 초기 조회
rainChkDetilUpdate, // 빗물이용시설 지도점검 상세 수정 저장
rainChkDelete, // 빗물이용시설 지도점검 선택 건 삭제
rainChkExcelDownload, // 빗물이용시설 지도점검 엑셀 양식/데이터 조회
rainChkHeadChange, // 빗물이용시설 테이블 헤더 선택 상태 변경
rainChkNmSearch, // 빗물이용시설명으로 목록 조회
isRainSttn, // 빗물이용시설 상세/선택 상태 초기화
rswtChkgdnInit, // 중수도시설 지도점검 목록 초기 조회
rswtChkNmSearch, // 중수도시설명으로 목록 조회
rswtChkPolInit, // 중수도 시설구분 변경 시 조회조건 초기화
rswtChkDetilsUpdate, // 중수도시설 지도점검 상세 수정 저장
rswtChkDelete, // 중수도시설 지도점검 선택 건 삭제
rswtrChkExcelDownload, // 중수도시설 지도점검 엑셀 양식/데이터 조회
rswtChkHeadChange, // 중수도시설 테이블 헤더 선택 상태 변경
getLaeSeCdCheck // 사용자 관할 기관 코드 조회
} = useWrStore((state) => {
return state;
});
@@ -13,6 +13,11 @@ import {
} from "../rainChkgdn/excel";
import { codeToText, textToCode } from "@/components/lib/func/common";
const normalizeExcelDateInput = (value: unknown) => {
if (value === undefined || value === null) return "";
return String(value).replace(/[.\-\/\s]/g, "");
};
export const rswtMakeExcelSample = (
buildings: Buildingtype[],
sidoCode: SelectDataType[],
@@ -142,7 +147,7 @@ export const excelToRswtGuideData = (
const rswtChkgdData: rswtChkZodType[] = excelData
.map((item: any) => {
if (item["점검일"] !== undefined) {
const checkYmd = item["점검일"].replace(/\./g, "");
const checkYmd = normalizeExcelDateInput(item["점검일"]);
const makeGuidDetail = Array.from({ length: 12 }, (_, i) => {
let month = `${i + 1}`;
@@ -156,20 +161,18 @@ export const excelToRswtGuideData = (
ruseFcltUtztnQnt: rswtData !== "" ? rswtData : 0,
};
});
if (checkYmd.length > 7) {
return {
bdstRuseFcltSn: Number(item["NO"]),
operMngCd: textToCode(item["운영관리형태"], "rainRswtMng") ??item["운영관리형태"],
anlOperCst: parseCommaRawValue(item["연간운영비(원/년)"]),
prcsCpct: parseRawValue(item[`처리용량(m³)`]),
spwtPositn: item["채수지점"],
chckYmd: checkYmd,
utztnUsgCd: textToCode(item["이용용도"], "dmdUszCd")??item["이용용도"],
guideDetails: makeGuidDetail,
rgtr: TEST_UUID,
mdfr: TEST_UUID,
};
}
return {
bdstRuseFcltSn: Number(item["NO"]),
operMngCd: textToCode(item["운영관리형태"], "rainRswtMng") ??item["운영관리형태"],
anlOperCst: parseCommaRawValue(item["연간운영비(원/년)"]),
prcsCpct: parseRawValue(item[`처리용량(m³)`]),
spwtPositn: item["채수지점"],
chckYmd: checkYmd,
utztnUsgCd: textToCode(item["이용용도"], "dmdUszCd")??item["이용용도"],
guideDetails: makeGuidDetail,
rgtr: TEST_UUID,
mdfr: TEST_UUID,
};
}
})
.filter((el: any) => el !== undefined);
@@ -186,11 +189,8 @@ export const excelToRswtPolution = (excelData: any) => {
const rswtChkgdData: rswtChkZodType[] = excelData
.map((item: any) => {
if (item["점검일"] !== undefined) {
const checkYmd = item["점검일"].replace(/\./g, "");
let vltnDt = item["과태료 부과일(위반일)"];
if (vltnDt !== undefined) {
vltnDt = vltnDt.replace(/\./g, "");
}
const checkYmd = normalizeExcelDateInput(item["점검일"]);
const vltnDt = normalizeExcelDateInput(item["과태료 부과일(위반일)"]);
const makePoluttion = Array.from({ length: 4 }, (_, i) => {
const quarter = `${i + 1}`;
@@ -41,19 +41,19 @@ export type rswtChkZodType = z.infer<typeof rswtChkgdZod>;
export type rswtrChkDetailsZodType = z.infer<typeof rswtrDetailsZod>;
export type rswtChkgdnState = {
rswtChkgdn: {
rswtChkHeadList: TableUpperProps[];
rswtDetailHeadList: TableUpperProps[];
rswtHeadNm: chHeadType[];
excelList: SheetParameter[];
rswtChkRes: rswtChkZodType[];
rswtChkPolGuide: rswtChkZodType[];
rswtSplHeadNm:chHeadType[]
rswtRuseHeadNm:chHeadType[]
isInit: boolean;
isSttn: boolean;
isLoading:boolean;
rswtChkCount: number;
rswtChkHeadList: TableUpperProps[]; // 중수도 지도점검 메인 목록 헤더
rswtDetailHeadList: TableUpperProps[]; // 중수도 지도점검 상세 목록 헤더
rswtHeadNm: chHeadType[]; // 메인 목록 다단 헤더명
excelList: SheetParameter[]; // 엑셀 다운로드용 시트 데이터
rswtChkRes: rswtChkZodType[]; // 중수도 지도점검 메인 목록 데이터
rswtChkPolGuide: rswtChkZodType[]; // 선택한 지도점검 1건의 수질/대체수 상세 데이터
rswtSplHeadNm:chHeadType[] // 공급량 관련 다단 헤더명
rswtRuseHeadNm:chHeadType[] // 재이용량 관련 다단 헤더명
isInit: boolean; // 초기 목록 조회 완료 여부
isSttn: boolean; // 테이블 선택/상세 상태 제어 플래그
isLoading:boolean; // 등록/업로드 등 비동기 처리 진행 여부
rswtChkCount: number; // 메인 목록 전체 건수
};
};
@@ -242,12 +242,14 @@ export const rswtChkgdnActionsExport: (set: any) => rswtChkgdnActions = (
console.log(error);
}
},
// 중수도 지도점검결과 upload
rswtChkExceDataUpload: async (excelData: rswtChkZodType[],laeSeCd:string) => {
const successMessage = "지도점검 등록이 완료되었습니다.";
const failMessage = "지도점검 등록이 실패되었습니다.";
console.log(excelData);
try {
set((state: rswtChkgdnType) => (
{ rswtChkgdn: { ...state.rswtChkgdn, isLoading: true } }));
set((state: rswtChkgdnType) => (
{ rswtChkgdn: { ...state.rswtChkgdn, isLoading: true } }));
const res = await postFectch("/reuseChk/reuseWater", excelData);
if (!res.ok) {
return failMessage;