결함조치 하는중
This commit is contained in:
@@ -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);
|
||||
|
||||
@@ -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,
|
||||
},
|
||||
}))
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user