결함조치 하는중

This commit is contained in:
2025-09-01 17:00:10 +09:00
parent 03dd39b128
commit e434e711bf
5 changed files with 113 additions and 12 deletions
+1 -4
View File
@@ -39,10 +39,7 @@ export default function DataForm({ type, column, item }: DataFormProps) {
break;
case 'float0':
if(value) {
item[column] = String(value).includes('.')?String(Math.round(parseFloat(value.toString().replace(/,/g, '')) * 1) / 1).split('.').map((part, index) =>
index === 0 ? part.replace(/\B(?=(\d{3})+(?!\d))/g, ",") : part
).join('.')
: String(value).replace(/\B(?=(\d{3})+(?!\d))/g, ",");
item[column] = roundNumber(value, 0);
}
break;
case 'float1':
@@ -22,10 +22,12 @@ export default function DashBoardChart({searchYear = '', fcltyList = []}: facili
const [chart_tpTp, setChart_tpTp] = useState<{
chartData1: lineChartDataProps[];
chartData2: lineChartDataProps[];
chartData3: lineChartDataProps[];
}>();
const [chart_tntn, setChart_tntn] = useState<{
chartData1: lineChartDataProps[];
chartData2: lineChartDataProps[];
chartData3: lineChartDataProps[];
}>();
const [chart_inflBodInflTn, setChart_inflBodInflTn] = useState<{
chartData1: lineChartDataProps[];
@@ -46,6 +48,7 @@ export default function DashBoardChart({searchYear = '', fcltyList = []}: facili
chart_efflTn,
chart_inflBod,
isLoadingMainGraph,
waterQltyStandartd,
} = MainGraph;
/**
@@ -90,6 +93,10 @@ export default function DashBoardChart({searchYear = '', fcltyList = []}: facili
label: '방류T-P',
color: colors[1],
},
chartData3: {
label : '법적방류T-P',
color : 'blackdash',
}
} satisfies ChartConfig;
// 유입T-N-방류T-N
@@ -102,6 +109,10 @@ export default function DashBoardChart({searchYear = '', fcltyList = []}: facili
label: '방류T-N',
color: colors[1],
},
chartData3: {
label : '법적방류T-N',
color : 'blackdash',
}
} satisfies ChartConfig;
// 유입BOD-유입T-N
@@ -139,21 +150,37 @@ export default function DashBoardChart({searchYear = '', fcltyList = []}: facili
useEffect(() => {
if (!chart_chongInTp || !chart_efflTp) return;
const legalTpData: lineChartDataProps[] = [];
if (waterQltyStandartd){
chart_inflTn.forEach(item =>{
legalTpData.push({label : item.label, val:waterQltyStandartd.tp});
})
}
const chartTpTpData = {
chartData1: chart_chongInTp,
chartData2: chart_efflTp
chartData2: chart_efflTp,
chartData3: legalTpData
};
setChart_tpTp(chartTpTpData);
}, [chart_chongInTp, chart_efflTp]);
}, [chart_chongInTp, chart_efflTp, chart_inflTn, waterQltyStandartd]);
useEffect(() => {
if (!chart_inflTn || !chart_efflTn) return;
const legalTnData: lineChartDataProps[] = [];
if (waterQltyStandartd){
chart_inflTn.forEach(item =>{
legalTnData.push({label : item.label, val:waterQltyStandartd.tn});
})
}
const chartTntnData = {
chartData1: chart_inflTn,
chartData2: chart_efflTn
chartData2: chart_efflTn,
chartData3: legalTnData,
};
setChart_tntn(chartTntnData);
}, [chart_inflTn, chart_efflTn]);
}, [chart_inflTn, chart_efflTn, waterQltyStandartd]);
useEffect(() => {
if (!chart_inflBod || !chart_inflTn) return;
@@ -18,6 +18,22 @@ const tabList = [
//{ value: 'drainageEquipment', label: '배수설비 정비현황' }
];
export const generateYearDates = (searchYear: string) => {
const dates: string[] = [];
const start = new Date(Number(searchYear), 0, 1); // 1월 1일
const end = new Date(Number(searchYear), 11, 31); // 12월 31일
for (let d = new Date(start); d <= end; d.setDate(d.getDate() + 1)) {
const year = d.getFullYear();
const month = String(d.getMonth() + 1).padStart(2, "0");
const day = String(d.getDate()).padStart(2, "0");
dates.push(`${year}-${month}-${day}`); // YYYY-MM-DD 형식
}
return dates;
}
export default function DashBoard() {
// 입력값 상태 관리
const { Common, initializeCommonData,searchMainGraph, searchRainManage, searchOperationStatus, OperationStatus, RainManage, MainGraph, PlanFclty } = useFoStore((state) => state);
@@ -191,9 +207,46 @@ export default function DashBoard() {
case 'mainGraph':
searchMainGraph(searchYear, fcltyList.bscFctCd);
const yearData = generateYearDates(searchYear);
const yearValueData : any = [];
for (const i in yearData){
const rowArray: string[] = [];
rowArray.push(yearData[i] ?? "");
//강수량
rowArray.push(roundNumber(chart_inflowRain.filter(item=>{return yearData[i] === item.label})[0]?.barVal0?.toString(), 1) || '');
//유입하수량
rowArray.push(roundNumber(chart_inflowRain.filter(item=>{return yearData[i] === item.label})[0]?.lineVal1?.toString(), 0) || '');
//시설용량
rowArray.push(roundNumber(chart_inflowRain.filter(item=>{return yearData[i] === item.label})[0]?.lineVal0?.toString(), 0) || '');
//유입BOD
rowArray.push(roundNumber(chart_bodRain.filter(item=>{return yearData[i] === item.label})[0]?.lineVal0?.toString(), 1) || '');
//유입T-P
rowArray.push(roundNumber(chart_inflTp.filter(item=>{return yearData[i] === item.label})[0]?.val?.toString(), 3) || '');
//총인유입T-P
rowArray.push(roundNumber(chart_chongInTp.filter(item=>{return yearData[i] === item.label})[0]?.val?.toString(), 3) || '');
//방류T-P
rowArray.push(roundNumber(chart_efflTp.filter(item=>{return yearData[i] === item.label})[0]?.val?.toString(), 3) || '');
//유입T-N
rowArray.push(roundNumber(chart_inflTn.filter(item=>{return yearData[i] === item.label})[0]?.val?.toString(), 3) || '');
//방류T-N
rowArray.push(roundNumber(chart_efflTn.filter(item=>{return yearData[i] === item.label})[0]?.val?.toString(), 3) || '');
yearValueData.push(
rowArray
)
}
console.log(yearValueData);
/* const excelData = [['날짜', '강수량', '유입하수량','시설용량', '유입BOD', '유입T-P', '총인유입T-P', '방류T-P'], */
const sheetParameter = [
{
data: [['날짜', '강수량', '유입하수량', '시설용량', '유입BOD', '유입T-P','총인유입T-P', '방류T-P', '유입T-N', '방류T-N'],...yearValueData],
headerNum: 1,
headerRange: 'A1:J1',
sheetName: '주요그래프'
}
/* {
data: [['날짜', '강수량'],...chart_inflowRain.map((item) => [item.label, roundNumber(item.barVal0, 1)])],
headerNum: 1,
headerRange: 'A1:B1',
@@ -246,7 +299,7 @@ export default function DashBoard() {
headerNum: 1,
headerRange: 'A1:B1',
sheetName: '방류T-N'
}
} */
];
downloadMultipleExcel('주요그래프', sheetParameter);
+26 -2
View File
@@ -6,8 +6,9 @@ import { getFetch } from "@/app/components/api";
import CalcRainEffect from "@/app/components/common/CalcRainEffect";
import DataForm from "@/app/components/common/DataForm";
import { fetchPlanInfo, OSU_PERCENT, qltyDataSetting, roundUp } from "../common";
import type { FacilityWaterQltyProps } from "../facilityWaterQlty";
import { type FacilityWaterQltyProps } from "../facilityWaterQlty";
import { fetchFlowRateModalList } from "../flowRate";
import { fetchFacilityWaterQltyInfo } from "../processFacility";
// selectBox
export type SelectDataType = {
@@ -100,7 +101,7 @@ export type lineBarChartDataProps = {
export type lineChartDataProps = {
label : string,
val : number
val : number,
}
export interface RainManageListProps {
@@ -662,6 +663,7 @@ const chart_inflTn : lineChartDataProps[] = [];
const chart_efflTn : lineChartDataProps[] = [];
const chart_inflBod : lineChartDataProps[] = [];
const chart_efflBod : lineChartDataProps[] = [];
const waterQltyStandartd : any = [];
const rainManageList : RainManageListProps[] = [];
@@ -1034,6 +1036,7 @@ export type DashBoardType = {
chart_efflTn : lineChartDataProps[];
chart_inflBod : lineChartDataProps[];
chart_efflBod : lineChartDataProps[];
waterQltyStandartd : any;
isLoadingMainGraph : boolean;
},
@@ -1096,6 +1099,7 @@ export const dashBoardInitState:DashBoardType = {
chart_efflTn : chart_efflTn,
chart_inflBod : chart_inflBod,
chart_efflBod : chart_efflBod,
waterQltyStandartd : waterQltyStandartd,
isLoadingMainGraph : false,
},
@@ -1817,6 +1821,24 @@ export const dashBoardReducer:(set:(fn: (state: DashBoardType) => DashBoardType)
},
}));
const res = await fetchMainGraph(searchYear, fcltyCd);
const res2 = await fetchFacilityWaterQltyInfo(fcltyCd);
// 법적방류수질 데이터
const sortedWaterQltyInfo = [...res2].sort((a, b) => {
// 숫자로 변환하여 비교
const numA = Number(a.extnsSeqno);
const numB = Number(b.extnsSeqno);
if (!isNaN(numA) && !isNaN(numB)) {
return numA - numB;
}
// 숫자 변환이 실패하면 문자열로 비교
return String(a.extnsSeqno).localeCompare(String(b.extnsSeqno));
});
const waterQltyStandartd : any = sortedWaterQltyInfo && sortedWaterQltyInfo.length > 0
? sortedWaterQltyInfo[sortedWaterQltyInfo.length - 1]
: [];
if(res == null || res.data == null || res.data.length === 0) {
set((state: DashBoardType) => ({
...state,
@@ -1831,6 +1853,7 @@ export const dashBoardReducer:(set:(fn: (state: DashBoardType) => DashBoardType)
chart_efflTn: [],
chart_inflBod: [],
chart_efflBod: [],
waterQltyStandartd : [],
isLoadingMainGraph : false,
}
}));
@@ -1898,6 +1921,7 @@ export const dashBoardReducer:(set:(fn: (state: DashBoardType) => DashBoardType)
chart_efflTn: chart_efflTn,
chart_inflBod: chart_inflBod,
chart_efflBod: chart_efflBod,
waterQltyStandartd : waterQltyStandartd,
isLoadingMainGraph : false,
},
}))
+1 -1
View File
@@ -456,7 +456,7 @@ const fetchFacilityHistInfo = async (facilityCd:string ): Promise<fcltyHistInfoP
};
// 시설정보 수질정보 데이터 호출
const fetchFacilityWaterQltyInfo = async (facilityCd:string ): Promise<fcltyWaterQltyInfoProps[]> => {
export const fetchFacilityWaterQltyInfo = async (facilityCd:string ): Promise<fcltyWaterQltyInfoProps[]> => {
try {
const res = await getFetch('fo', '/prcsFclt/info/history/'+facilityCd);
const data = res.data;