rdii 개선
This commit is contained in:
@@ -4,11 +4,12 @@
|
|||||||
* 1.강우영향일 및 강우량을 계산하며 강우량이 3이상이면 강우영향일이며 이후 이틀까지 강우영향일로 포함
|
* 1.강우영향일 및 강우량을 계산하며 강우량이 3이상이면 강우영향일이며 이후 이틀까지 강우영향일로 포함
|
||||||
*
|
*
|
||||||
* 2.강우영향일이면서 3mm이하의 강우량일 경우에는 강우영향을 준 날의 강우량을 따름
|
* 2.강우영향일이면서 3mm이하의 강우량일 경우에는 강우영향을 준 날의 강우량을 따름
|
||||||
* @param data
|
* @param data
|
||||||
|
* @param weather (default:ALL)
|
||||||
* @author jsyang
|
* @author jsyang
|
||||||
*/
|
*/
|
||||||
|
|
||||||
export default function CalcRainEffect(data : any) {
|
export default function CalcRainEffect(data : any, weather? : string | 'ALL') {
|
||||||
console.log("%c Calculate RainEffect ! ", "background:blue;color:white");
|
console.log("%c Calculate RainEffect ! ", "background:blue;color:white");
|
||||||
// 강우영향일 계산 (강우량이 3 초과이면 무조건 강우영향일)
|
// 강우영향일 계산 (강우량이 3 초과이면 무조건 강우영향일)
|
||||||
for(let idx = 0; idx < data.length; idx++) {
|
for(let idx = 0; idx < data.length; idx++) {
|
||||||
@@ -50,5 +51,14 @@ export default function CalcRainEffect(data : any) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return data;
|
|
||||||
|
let rtnData : any = [];
|
||||||
|
if (weather === 'ALL') {
|
||||||
|
rtnData = data;
|
||||||
|
} else if (weather === 'SUNNY') {
|
||||||
|
rtnData = data.filter((item: any) => item.rainEffectDay === 0);
|
||||||
|
} else {
|
||||||
|
rtnData = data.filter((item: any) => item.rainEffectDay === 1);
|
||||||
|
}
|
||||||
|
return rtnData;
|
||||||
}
|
}
|
||||||
@@ -1,8 +1,9 @@
|
|||||||
import { getFetch } from "@/app/components/api";
|
import { getFetch } from "@/app/components/api";
|
||||||
|
import CalcRainEffect from "@/app/components/common/CalcRainEffect";
|
||||||
import DataForm from "@/app/components/common/DataForm";
|
import DataForm from "@/app/components/common/DataForm";
|
||||||
import type { TableUpperProps } from "../dashboard";
|
import type { TableUpperProps } from "../dashboard";
|
||||||
import { fetchFacilityWaterQltyListHist } from "../facilityWaterQlty";
|
import { fetchFacilityWaterQltyListHist } from "../facilityWaterQlty";
|
||||||
import { calRainEffectDay } from "../underWaterInput";
|
import type { FlowResponse } from "../sewageOccur";
|
||||||
export type { TableUpperProps };
|
export type { TableUpperProps };
|
||||||
/**====================================
|
/**====================================
|
||||||
* Store - 타입
|
* Store - 타입
|
||||||
@@ -30,6 +31,9 @@ export type RdiProps = {
|
|||||||
lgbsn : string,
|
lgbsn : string,
|
||||||
mdmbsn : string,
|
mdmbsn : string,
|
||||||
rainEffectDay : number, // 강우영향일
|
rainEffectDay : number, // 강우영향일
|
||||||
|
chungchunFlow : string | number | '',
|
||||||
|
rainCalInflAmnt : string | number | '',
|
||||||
|
properYn : string,
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface RdiInterface {
|
export interface RdiInterface {
|
||||||
@@ -49,6 +53,10 @@ export interface RdiInterface {
|
|||||||
rvbsn : string,
|
rvbsn : string,
|
||||||
lgbsn : string,
|
lgbsn : string,
|
||||||
mdmbsn : string,
|
mdmbsn : string,
|
||||||
|
rainEffectDay : number, // 강우영향일
|
||||||
|
chungchunFlow : string | number | '',
|
||||||
|
rainCalInflAmnt : string | number | '',
|
||||||
|
properYn : string,
|
||||||
}
|
}
|
||||||
|
|
||||||
// 모달
|
// 모달
|
||||||
@@ -80,11 +88,14 @@ export interface ExcelType {
|
|||||||
시설명: string,
|
시설명: string,
|
||||||
주소: string,
|
주소: string,
|
||||||
시설용량: number,
|
시설용량: number,
|
||||||
|
청천시유입하수량: string | number | '',
|
||||||
하절기강우일최저유입BOD: number | '',
|
하절기강우일최저유입BOD: number | '',
|
||||||
하절기최저유입BOD유입유량: number | string | '',
|
하절기최저유입BOD유입유량: number | string | '',
|
||||||
동절기청천시유입BOD: number | '',
|
동절기청천시유입BOD: number | '',
|
||||||
RDII추정 : number | '',
|
RDII추정 : number | '',
|
||||||
RDII추정시일강수량 : number | '',
|
RDII추정시일강수량 : number | '',
|
||||||
|
강우시총추정유입량 : string | number | '',
|
||||||
|
적정여부 : string,
|
||||||
}
|
}
|
||||||
|
|
||||||
// 리스트 헤더
|
// 리스트 헤더
|
||||||
@@ -95,6 +106,7 @@ const upHeadList1:TableUpperProps[] = [
|
|||||||
{ id: "bscFctNm", title: "시설명", row:0, rowSpan:2 },
|
{ id: "bscFctNm", title: "시설명", row:0, rowSpan:2 },
|
||||||
{ id: "daddr", title: "주소", row:0, rowSpan:2 },
|
{ id: "daddr", title: "주소", row:0, rowSpan:2 },
|
||||||
{ id: "fctCpc", title: "시설용량\n(m³/일)", align:"right", row:0, rowSpan:2 },
|
{ id: "fctCpc", title: "시설용량\n(m³/일)", align:"right", row:0, rowSpan:2 },
|
||||||
|
{ id: "chungchunFlow", title: "청천시 유입하수량\n(m³/일)", align:"right", row:0, rowSpan:2 },
|
||||||
{ id: "B", title: "하절기 운영현황(6~8월)", row:0, colSpan:2 },
|
{ id: "B", title: "하절기 운영현황(6~8월)", row:0, colSpan:2 },
|
||||||
{ id: "summerMinBodValue", title: "3mm 이상 강우일 중 최저 유입BOD\n(mg/L)", align:"right", row:1 },
|
{ id: "summerMinBodValue", title: "3mm 이상 강우일 중 최저 유입BOD\n(mg/L)", align:"right", row:1 },
|
||||||
{ id: "inflAmnt", title: "하절기최저유입BOD유입유량\n(m³/일)", row:1, align:"right" },
|
{ id: "inflAmnt", title: "하절기최저유입BOD유입유량\n(m³/일)", row:1, align:"right" },
|
||||||
@@ -102,6 +114,8 @@ const upHeadList1:TableUpperProps[] = [
|
|||||||
{ id: "winterAvgBodLowRainfall", title: "청천시 유입BOD\n(mg/L)", row:1, align:"right" },
|
{ id: "winterAvgBodLowRainfall", title: "청천시 유입BOD\n(mg/L)", row:1, align:"right" },
|
||||||
{ id: "rdiiValue", title: "RDII추정", row:0, rowSpan:2, align:"right" },
|
{ id: "rdiiValue", title: "RDII추정", row:0, rowSpan:2, align:"right" },
|
||||||
{ id: "infoRnDay", title: "RDII추정시일강수량\n(mm)", row:0, rowSpan:2, align:"right" },
|
{ id: "infoRnDay", title: "RDII추정시일강수량\n(mm)", row:0, rowSpan:2, align:"right" },
|
||||||
|
{ id: "rainCalInflAmnt", title: "강우시 총 추정유입량\n(m³/일)", row:0, rowSpan:2, align:"right" },
|
||||||
|
{ id: "properYn", title: "적정여부", row:0, rowSpan:2 },
|
||||||
];
|
];
|
||||||
|
|
||||||
const upHeadList2:TableUpperProps[] = [
|
const upHeadList2:TableUpperProps[] = [
|
||||||
@@ -112,6 +126,7 @@ const upHeadList2:TableUpperProps[] = [
|
|||||||
{ id: "bscFctNm", title: "시설명", row:0, rowSpan:2 },
|
{ id: "bscFctNm", title: "시설명", row:0, rowSpan:2 },
|
||||||
{ id: "daddr", title: "주소", row:0, rowSpan:2 },
|
{ id: "daddr", title: "주소", row:0, rowSpan:2 },
|
||||||
{ id: "fctCpc", title: "시설용량(m³/일)", align:"right", row:0, rowSpan:2 },
|
{ id: "fctCpc", title: "시설용량(m³/일)", align:"right", row:0, rowSpan:2 },
|
||||||
|
{ id: "chungchunFlow", title: "청천시 유입하수량\n(m³/일)", align:"right", row:0, rowSpan:2 },
|
||||||
{ id: "B", title: "하절기 운영현황(6~8월)", row:0, colSpan:2 },
|
{ id: "B", title: "하절기 운영현황(6~8월)", row:0, colSpan:2 },
|
||||||
{ id: "summerMinBodValue", title: "하절기강우일최저유입BOD", align:"right", row:1 },
|
{ id: "summerMinBodValue", title: "하절기강우일최저유입BOD", align:"right", row:1 },
|
||||||
{ id: "inflAmnt", title: "하절기최저유입BOD유입유량", row:1, align:"right" },
|
{ id: "inflAmnt", title: "하절기최저유입BOD유입유량", row:1, align:"right" },
|
||||||
@@ -119,6 +134,8 @@ const upHeadList2:TableUpperProps[] = [
|
|||||||
{ id: "winterAvgBodLowRainfall", title: "동절기청천시유입BOD", row:1, align:"right" },
|
{ id: "winterAvgBodLowRainfall", title: "동절기청천시유입BOD", row:1, align:"right" },
|
||||||
{ id: "rdiiValue", title: "RDII추정", row:0, rowSpan:2, align:"right" },
|
{ id: "rdiiValue", title: "RDII추정", row:0, rowSpan:2, align:"right" },
|
||||||
{ id: "infoRnDay", title: "RDII추정시일강수량", row:0, rowSpan:2, align:"right" },
|
{ id: "infoRnDay", title: "RDII추정시일강수량", row:0, rowSpan:2, align:"right" },
|
||||||
|
{ id: "rainCalInflAmnt", title: "강우시 총 추정유입량\n(m³/일)", row:0, rowSpan:2, align:"right" },
|
||||||
|
{ id: "properYn", title: "적정여부", row:0, rowSpan:2 },
|
||||||
];
|
];
|
||||||
|
|
||||||
const upHeadList3:TableUpperProps[] = [
|
const upHeadList3:TableUpperProps[] = [
|
||||||
@@ -133,6 +150,7 @@ const upHeadList3:TableUpperProps[] = [
|
|||||||
{ id: "bscFctNm", title: "시설명", row:0, rowSpan:2 },
|
{ id: "bscFctNm", title: "시설명", row:0, rowSpan:2 },
|
||||||
{ id: "daddr", title: "주소", row:0, rowSpan:2 },
|
{ id: "daddr", title: "주소", row:0, rowSpan:2 },
|
||||||
{ id: "fctCpc", title: "시설용량(m³/일)", align:"right", row:0, rowSpan:2 },
|
{ id: "fctCpc", title: "시설용량(m³/일)", align:"right", row:0, rowSpan:2 },
|
||||||
|
{ id: "chungchunFlow", title: "청천시 유입하수량\n(m³/일)", align:"right", row:0, rowSpan:2 },
|
||||||
{ id: "C", title: "하절기 운영현황(6~8월)", row:0, colSpan:2 },
|
{ id: "C", title: "하절기 운영현황(6~8월)", row:0, colSpan:2 },
|
||||||
{ id: "summerMinBodValue", title: "하절기강우일최저유입BOD", align:"right", row:1 },
|
{ id: "summerMinBodValue", title: "하절기강우일최저유입BOD", align:"right", row:1 },
|
||||||
{ id: "inflAmnt", title: "하절기최저유입BOD유입유량", row:1, align:"right" },
|
{ id: "inflAmnt", title: "하절기최저유입BOD유입유량", row:1, align:"right" },
|
||||||
@@ -140,6 +158,8 @@ const upHeadList3:TableUpperProps[] = [
|
|||||||
{ id: "winterAvgBodLowRainfall", title: "동절기청천시유입BOD", row:1, align:"right" },
|
{ id: "winterAvgBodLowRainfall", title: "동절기청천시유입BOD", row:1, align:"right" },
|
||||||
{ id: "rdiiValue", title: "RDII추정", row:0, rowSpan:2, align:"right" },
|
{ id: "rdiiValue", title: "RDII추정", row:0, rowSpan:2, align:"right" },
|
||||||
{ id: "infoRnDay", title: "RDII추정시일강수량", row:0, rowSpan:2, align:"right" },
|
{ id: "infoRnDay", title: "RDII추정시일강수량", row:0, rowSpan:2, align:"right" },
|
||||||
|
{ id: "rainCalInflAmnt", title: "강우시 총 추정유입량\n(m³/일)", row:0, rowSpan:2, align:"right" },
|
||||||
|
{ id: "properYn", title: "적정여부", row:0, rowSpan:2 },
|
||||||
];
|
];
|
||||||
|
|
||||||
const rdiList:RdiProps[] = [
|
const rdiList:RdiProps[] = [
|
||||||
@@ -153,7 +173,6 @@ const fetchRdiList = async (pageNo: number, pageSize: number, searchYear: string
|
|||||||
try{
|
try{
|
||||||
const tailStr = partCd ? '/'+ partCd + '/' + nameCd + '/' + fcltCpct + '/' + operationValue + (fcltyNm && fcltyNm !== '' ? '/' + fcltyNm : '') : '';
|
const tailStr = partCd ? '/'+ partCd + '/' + nameCd + '/' + fcltCpct + '/' + operationValue + (fcltyNm && fcltyNm !== '' ? '/' + fcltyNm : '') : '';
|
||||||
const url = '/rdii/list/' + pageNo + '/' + pageSize + '/' + searchYear + tailStr;
|
const url = '/rdii/list/' + pageNo + '/' + pageSize + '/' + searchYear + tailStr;
|
||||||
console.log(url);
|
|
||||||
const res = await getFetch('fo', url);
|
const res = await getFetch('fo', url);
|
||||||
return { data: res.data, count: res.count }
|
return { data: res.data, count: res.count }
|
||||||
}catch(error){
|
}catch(error){
|
||||||
@@ -212,6 +231,8 @@ const dataFormSetting=(item : RdiProps)=> {
|
|||||||
DataForm({ type: 'float0', column: 'rdiiValue', item: item as unknown as Record<string, unknown>});
|
DataForm({ type: 'float0', column: 'rdiiValue', item: item as unknown as Record<string, unknown>});
|
||||||
DataForm({ type: 'float1', column: 'infoRnDay', item: item as unknown as Record<string, unknown>});
|
DataForm({ type: 'float1', column: 'infoRnDay', item: item as unknown as Record<string, unknown>});
|
||||||
DataForm({ type: 'float0', column: 'inflAmnt', item: item as unknown as Record<string, unknown>});
|
DataForm({ type: 'float0', column: 'inflAmnt', item: item as unknown as Record<string, unknown>});
|
||||||
|
DataForm({ type: 'float0', column: 'chungchunFlow', item: item as unknown as Record<string, unknown>});
|
||||||
|
DataForm({ type: 'float0', column: 'rainCalInflAmnt', item: item as unknown as Record<string, unknown>});
|
||||||
}
|
}
|
||||||
|
|
||||||
// Add type definitions for state setter function
|
// Add type definitions for state setter function
|
||||||
@@ -232,9 +253,32 @@ export const rdiReducer:(set:SetStateFunction)=>RdiActions=(set: SetStateFunctio
|
|||||||
|
|
||||||
const res = await fetchRdiList(pageNo, pageSize, searchYear, partCd, nameCd, fcltCpct, operationValue, fcltyNm);
|
const res = await fetchRdiList(pageNo, pageSize, searchYear, partCd, nameCd, fcltCpct, operationValue, fcltyNm);
|
||||||
const data = res.data;
|
const data = res.data;
|
||||||
const excelDownList: ExcelType[] = [];
|
const reData = await Promise.all(data.map(async (item: RdiProps) => {
|
||||||
|
const bscFctCd = item.bscFctCd;
|
||||||
|
const res2 = await getFetch('fo', '/fclt/flow/' + bscFctCd + '/' + searchYear) as FlowResponse;
|
||||||
|
const calData = CalcRainEffect(res2.data, 'SUNNY');
|
||||||
|
let avgChungcunSumFlow = 0;
|
||||||
|
let chungcunSumFlow = 0;
|
||||||
|
|
||||||
const rtnData = data.map((item: RdiProps) => {
|
calData.forEach((flowItem: any) => {
|
||||||
|
chungcunSumFlow += flowItem.inflAmnt && flowItem.inflAmnt !== 'x' ? Number(flowItem.inflAmnt.toString().trim()) : 0;
|
||||||
|
/* if(flowItem.msrDt.substring(4,6) ==='06' || flowItem.msrDt.substring(4,6) ==='07' || flowItem.msrDt.substring(4,6) ==='08'){
|
||||||
|
sumSummerChungcunDay += 1;
|
||||||
|
sumSummerChungcunFlow += flowItem.inflAmnt && flowItem.inflAmnt !== 'x' ? Number(flowItem.inflAmnt.toString().trim()) : 0;
|
||||||
|
}else if(flowItem.msrDt.substring(4,6) ==='01' || flowItem.msrDt.substring(4,6) ==='02'){
|
||||||
|
sumWinterChungcunDay += 1;
|
||||||
|
sumWinterChungcunFlow += flowItem.inflAmnt && flowItem.inflAmnt !== 'x' ? Number(flowItem.inflAmnt.toString().trim()) : 0;
|
||||||
|
} */
|
||||||
|
});
|
||||||
|
avgChungcunSumFlow = chungcunSumFlow&&chungcunSumFlow>0?chungcunSumFlow / calData.length : 0;
|
||||||
|
item.chungchunFlow = avgChungcunSumFlow;
|
||||||
|
item.rainCalInflAmnt = Number(avgChungcunSumFlow) - Number(item.rdiiValue);
|
||||||
|
item.properYn = Number(item.rainCalInflAmnt) > Number(item.fctCpc) ? '초과유입' : '적정'
|
||||||
|
return item;
|
||||||
|
}));
|
||||||
|
|
||||||
|
const excelDownList: ExcelType[] = [];
|
||||||
|
const rtnData = reData.map((item: RdiProps) => {
|
||||||
return {
|
return {
|
||||||
...item,
|
...item,
|
||||||
sido: item.lclgvrnmntNm.split(' ')[0]?.toString() || '',
|
sido: item.lclgvrnmntNm.split(' ')[0]?.toString() || '',
|
||||||
@@ -256,9 +300,9 @@ export const rdiReducer:(set:SetStateFunction)=>RdiActions=(set: SetStateFunctio
|
|||||||
dataItem.rainEffectDay = 0;
|
dataItem.rainEffectDay = 0;
|
||||||
});
|
});
|
||||||
|
|
||||||
calRainEffectDay(rtnWqltData, 'SUNNY');
|
const calcData = CalcRainEffect(rtnWqltData, 'SUNNY');
|
||||||
|
|
||||||
const rtnWqltWinterData = rtnWqltData.filter((dataItem: any) =>
|
const rtnWqltWinterData = calcData.filter((dataItem: any) =>
|
||||||
(dataItem.msrDt.substring(4, 6) === '01' ||
|
(dataItem.msrDt.substring(4, 6) === '01' ||
|
||||||
dataItem.msrDt.substring(4, 6) === '02') &&
|
dataItem.msrDt.substring(4, 6) === '02') &&
|
||||||
dataItem.rainEffectDay == 0
|
dataItem.rainEffectDay == 0
|
||||||
@@ -295,11 +339,14 @@ export const rdiReducer:(set:SetStateFunction)=>RdiActions=(set: SetStateFunctio
|
|||||||
시군구: item.sigungo,
|
시군구: item.sigungo,
|
||||||
주소: item.daddr,
|
주소: item.daddr,
|
||||||
시설용량: item.fctCpc,
|
시설용량: item.fctCpc,
|
||||||
|
청천시유입하수량: item.chungchunFlow,
|
||||||
하절기강우일최저유입BOD: item.summerMinBodValue,
|
하절기강우일최저유입BOD: item.summerMinBodValue,
|
||||||
하절기최저유입BOD유입유량: item.inflAmnt,
|
하절기최저유입BOD유입유량: item.inflAmnt,
|
||||||
동절기청천시유입BOD: item.winterAvgBodLowRainfall,
|
동절기청천시유입BOD: item.winterAvgBodLowRainfall,
|
||||||
RDII추정 : item.rdiiValue,
|
RDII추정: item.rdiiValue,
|
||||||
RDII추정시일강수량 : item.infoRnDay,
|
RDII추정시일강수량: item.infoRnDay,
|
||||||
|
강우시총추정유입량: item.rainCalInflAmnt,
|
||||||
|
적정여부: item.properYn,
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ import { getFetch } from "@/app/components/api";
|
|||||||
import DataForm from "@/app/components/common/DataForm";
|
import DataForm from "@/app/components/common/DataForm";
|
||||||
import type { TableUpperProps } from "../dashboard";
|
import type { TableUpperProps } from "../dashboard";
|
||||||
import type { ExcelType, UnderWaterInputModalProps, UnderWaterProps } from "./types";
|
import type { ExcelType, UnderWaterInputModalProps, UnderWaterProps } from "./types";
|
||||||
|
import CalcRainEffect from "@/app/components/common/CalcRainEffect";
|
||||||
export type { TableUpperProps };
|
export type { TableUpperProps };
|
||||||
|
|
||||||
// SewageOccurDetailProps 타입을 여기에 정의
|
// SewageOccurDetailProps 타입을 여기에 정의
|
||||||
@@ -38,10 +39,12 @@ const upHeadList1:TableUpperProps[] = [
|
|||||||
{ id: "bscFctNm", title: "시설명", row:0, rowSpan:2 },
|
{ id: "bscFctNm", title: "시설명", row:0, rowSpan:2 },
|
||||||
{ id: "daddr", title: "주소", row:0, rowSpan:2 },
|
{ id: "daddr", title: "주소", row:0, rowSpan:2 },
|
||||||
{ id: "fctCpc", title: "시설용량(m³/일)", align:"right", row:0, rowSpan:2 },
|
{ id: "fctCpc", title: "시설용량(m³/일)", align:"right", row:0, rowSpan:2 },
|
||||||
|
{ id: "inflAmnt", title: "평균유입하수량(m³/일)", align:"right", row:0, rowSpan:2 },
|
||||||
{ id: "C", title: "지하수 유입량 추정", align:"right", row:0, colSpan:3 },
|
{ id: "C", title: "지하수 유입량 추정", align:"right", row:0, colSpan:3 },
|
||||||
{ id: "underWaterInputYear", title: "연간\n(m³/일)", align:"right", row:1 },
|
{ id: "underWaterInputYear", title: "연간\n(m³/일)", align:"right", row:1 },
|
||||||
{ id: "underWaterInputSummer", title: "하절기\n(m³/일)", align:"right", row:1 },
|
{ id: "underWaterInputSummer", title: "하절기\n(m³/일)", align:"right", row:1 },
|
||||||
{ id: "underWaterInputWinter", title: "동절기\n(m³/일)", align:"right", row:1 },
|
{ id: "underWaterInputWinter", title: "동절기\n(m³/일)", align:"right", row:1 },
|
||||||
|
{ id: "properYn", title: "적정여부", row:0, rowSpan:2 },
|
||||||
];
|
];
|
||||||
|
|
||||||
const upHeadList2:TableUpperProps[] = [
|
const upHeadList2:TableUpperProps[] = [
|
||||||
@@ -52,10 +55,12 @@ const upHeadList2:TableUpperProps[] = [
|
|||||||
{ id: "bscFctNm", title: "시설명", row:0, rowSpan:2 },
|
{ id: "bscFctNm", title: "시설명", row:0, rowSpan:2 },
|
||||||
{ id: "daddr", title: "주소", row:0, rowSpan:2 },
|
{ id: "daddr", title: "주소", row:0, rowSpan:2 },
|
||||||
{ id: "fctCpc", title: "시설용량(m³/일)", align:"right", row:0, rowSpan:2 },
|
{ id: "fctCpc", title: "시설용량(m³/일)", align:"right", row:0, rowSpan:2 },
|
||||||
|
{ id: "inflAmnt", title: "평균유입하수량(m³/일)", align:"right", row:0, rowSpan:2 },
|
||||||
{ id: "C", title: "지하수 유입량 추정", align:"right", row:0, colSpan:3 },
|
{ id: "C", title: "지하수 유입량 추정", align:"right", row:0, colSpan:3 },
|
||||||
{ id: "underWaterInputYear", title: "연간\n(m³/일)", align:"right", row:1 },
|
{ id: "underWaterInputYear", title: "연간\n(m³/일)", align:"right", row:1 },
|
||||||
{ id: "underWaterInputSummer", title: "하절기\n(m³/일)", align:"right", row:1 },
|
{ id: "underWaterInputSummer", title: "하절기\n(m³/일)", align:"right", row:1 },
|
||||||
{ id: "underWaterInputWinter", title: "동절기\n(m³/일)", align:"right", row:1 },
|
{ id: "underWaterInputWinter", title: "동절기\n(m³/일)", align:"right", row:1 },
|
||||||
|
{ id: "properYn", title: "적정여부", row:0, rowSpan:2 },
|
||||||
];
|
];
|
||||||
|
|
||||||
const upHeadList3:TableUpperProps[] = [
|
const upHeadList3:TableUpperProps[] = [
|
||||||
@@ -70,10 +75,12 @@ const upHeadList3:TableUpperProps[] = [
|
|||||||
{ id: "bscFctNm", title: "시설명", row:0, rowSpan:2 },
|
{ id: "bscFctNm", title: "시설명", row:0, rowSpan:2 },
|
||||||
{ id: "daddr", title: "주소", row:0, rowSpan:2 },
|
{ id: "daddr", title: "주소", row:0, rowSpan:2 },
|
||||||
{ id: "fctCpc", title: "시설용량(m³/일)", align:"right", row:0, rowSpan:2 },
|
{ id: "fctCpc", title: "시설용량(m³/일)", align:"right", row:0, rowSpan:2 },
|
||||||
|
{ id: "inflAmnt", title: "평균유입하수량(m³/일)", align:"right", row:0, rowSpan:2 },
|
||||||
{ id: "C", title: "지하수 유입량 추정", align:"right", row:0, colSpan:3 },
|
{ id: "C", title: "지하수 유입량 추정", align:"right", row:0, colSpan:3 },
|
||||||
{ id: "underWaterInputYear", title: "연간\n(m³/일)", align:"right", row:1 },
|
{ id: "underWaterInputYear", title: "연간\n(m³/일)", align:"right", row:1 },
|
||||||
{ id: "underWaterInputSummer", title: "하절기\n(m³/일)", align:"right", row:1 },
|
{ id: "underWaterInputSummer", title: "하절기\n(m³/일)", align:"right", row:1 },
|
||||||
{ id: "underWaterInputWinter", title: "동절기\n(m³/일)", align:"right", row:1 },
|
{ id: "underWaterInputWinter", title: "동절기\n(m³/일)", align:"right", row:1 },
|
||||||
|
{ id: "properYn", title: "적정여부", row:0, rowSpan:2 },
|
||||||
];
|
];
|
||||||
|
|
||||||
// 모달
|
// 모달
|
||||||
@@ -251,6 +258,7 @@ export const underWaterInitState: UnderWaterType = {
|
|||||||
|
|
||||||
const dataFormSetting=(item : UnderWaterProps)=> {
|
const dataFormSetting=(item : UnderWaterProps)=> {
|
||||||
DataForm({ type: 'float0', column: 'fctCpc', item: item as unknown as Record<string, unknown> });
|
DataForm({ type: 'float0', column: 'fctCpc', item: item as unknown as Record<string, unknown> });
|
||||||
|
DataForm({ type: 'float0', column: 'inflAmnt', item: item as unknown as Record<string, unknown> });
|
||||||
DataForm({ type: 'float0', column: 'underWaterInputYear', item: item as unknown as Record<string, unknown>});
|
DataForm({ type: 'float0', column: 'underWaterInputYear', item: item as unknown as Record<string, unknown>});
|
||||||
DataForm({ type: 'float0', column: 'underWaterInputSummer', item: item as unknown as Record<string, unknown>});
|
DataForm({ type: 'float0', column: 'underWaterInputSummer', item: item as unknown as Record<string, unknown>});
|
||||||
DataForm({ type: 'float0', column: 'underWaterInputWinter', item: item as unknown as Record<string, unknown>});
|
DataForm({ type: 'float0', column: 'underWaterInputWinter', item: item as unknown as Record<string, unknown>});
|
||||||
@@ -258,65 +266,6 @@ const dataFormSetting=(item : UnderWaterProps)=> {
|
|||||||
|
|
||||||
export type UnderWaterStore = UnderWaterType & UnderWaterActions;
|
export type UnderWaterStore = UnderWaterType & UnderWaterActions;
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
* @param data
|
|
||||||
* @param weather ('ALL' | 'SUNNY' | 'RAINY')
|
|
||||||
* @returns
|
|
||||||
*/
|
|
||||||
export const calRainEffectDay = (data: any, weather: string) => {
|
|
||||||
// 강우영향일 계산 (강우량이 3 이상이면 무조건 강우영향일)
|
|
||||||
for(let idx = 0; idx < data.length; idx++) {
|
|
||||||
const item = data[idx];
|
|
||||||
if(item){
|
|
||||||
if(item.infoRnDay && Number(item.infoRnDay.toString().trim()) >= 3) {
|
|
||||||
item.rainEffectDay = 1;
|
|
||||||
} else {
|
|
||||||
item.rainEffectDay = 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 이틀 전, 하루 전이 강우영향일(3 이상)인 경우 해당 날도 강우영향일로 설정
|
|
||||||
for(let idx = 0; idx < data.length; idx++) {
|
|
||||||
if(data[idx]) {
|
|
||||||
// 하루 전이 강우영향일(3 이상)인 경우
|
|
||||||
if(idx > 0 && data[idx-1]?.infoRnDay && Number(data[idx-1]?.infoRnDay.toString().trim()) >= 3) {
|
|
||||||
data[idx]!.rainEffectDay = 1;
|
|
||||||
}
|
|
||||||
// 이틀 전이 강우영향일(3 이상)인 경우
|
|
||||||
if(idx > 1 && data[idx-2]?.infoRnDay && Number(data[idx-2]?.infoRnDay.toString().trim()) >= 3) {
|
|
||||||
data[idx]!.rainEffectDay = 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
for(let idx = 0; idx < data.length; idx++) {
|
|
||||||
if(data[idx] && data[idx]?.rainEffectDay === 1) {
|
|
||||||
if(idx > 1){
|
|
||||||
if(data[idx-1]?.infoRnDay && Number(data[idx]?.infoRnDay) < 3 && Number(data[idx-1]?.infoRnDay.toString().trim()) >= 3) {
|
|
||||||
data[idx]!.infoRnDay = data[idx-1]!.infoRnDay;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if(idx > 2){
|
|
||||||
if(data[idx-2]?.infoRnDay && Number(data[idx]?.infoRnDay) < 3 && Number(data[idx-2]?.infoRnDay.toString().trim()) >= 3) {
|
|
||||||
data[idx]!.infoRnDay = data[idx-2]!.infoRnDay;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
let rtnData : FlowDataItem[] = [];
|
|
||||||
if (weather === 'ALL') {
|
|
||||||
rtnData = data;
|
|
||||||
} else if (weather === 'SUNNY') {
|
|
||||||
rtnData = data.filter((item: FlowDataItem) => item.rainEffectDay === 0);
|
|
||||||
} else {
|
|
||||||
rtnData = data.filter((item: FlowDataItem) => item.rainEffectDay === 1);
|
|
||||||
}
|
|
||||||
return rtnData;
|
|
||||||
}
|
|
||||||
|
|
||||||
export const underWaterReducer:(set:(fn: (state: UnderWaterType) => UnderWaterType) => void)=>UnderWaterActions=(set: (fn: (state: UnderWaterType) => UnderWaterType) => void) => {
|
export const underWaterReducer:(set:(fn: (state: UnderWaterType) => UnderWaterType) => void)=>UnderWaterActions=(set: (fn: (state: UnderWaterType) => UnderWaterType) => void) => {
|
||||||
return {
|
return {
|
||||||
searchUnderWaterList: async (pageNo: number, pageSize: number, searchYear: string, part?: string, nameCd?: string, fcltCpct?: string, operationValue?: string, fcltyNm?: string) => {
|
searchUnderWaterList: async (pageNo: number, pageSize: number, searchYear: string, part?: string, nameCd?: string, fcltCpct?: string, operationValue?: string, fcltyNm?: string) => {
|
||||||
@@ -337,7 +286,7 @@ export const underWaterReducer:(set:(fn: (state: UnderWaterType) => UnderWaterTy
|
|||||||
|
|
||||||
const bscFctCd = item.bscFctCd;
|
const bscFctCd = item.bscFctCd;
|
||||||
const res2 = await getFetch('fo', '/fclt/flow/' + bscFctCd + '/' + searchYear) as ApiResponse;
|
const res2 = await getFetch('fo', '/fclt/flow/' + bscFctCd + '/' + searchYear) as ApiResponse;
|
||||||
const calData = calRainEffectDay(res2.data, 'SUNNY');
|
const calData = CalcRainEffect(res2.data, 'SUNNY');
|
||||||
let chungcunSumFlow = 0;
|
let chungcunSumFlow = 0;
|
||||||
|
|
||||||
let sumSummerChungcunDay = 0;
|
let sumSummerChungcunDay = 0;
|
||||||
@@ -370,7 +319,7 @@ export const underWaterReducer:(set:(fn: (state: UnderWaterType) => UnderWaterTy
|
|||||||
item.underWaterInputYear = Math.round((usage-(usage*0.65*0.9)) * 1) / 1;
|
item.underWaterInputYear = Math.round((usage-(usage*0.65*0.9)) * 1) / 1;
|
||||||
item.underWaterInputSummer = Math.round((summerUsage-(summerUsage*0.65*0.9)) * 1) / 1;
|
item.underWaterInputSummer = Math.round((summerUsage-(summerUsage*0.65*0.9)) * 1) / 1;
|
||||||
item.underWaterInputWinter = Math.round((winterUsage-(winterUsage*0.65*0.9)) * 1) / 1;
|
item.underWaterInputWinter = Math.round((winterUsage-(winterUsage*0.65*0.9)) * 1) / 1;
|
||||||
|
item.properYn = Math.round( (Number(usage-(usage*0.65*0.9)) / Number(item.inflAmnt)) * 100 * 1 ) / 1 > 20?'초과유입':'적정';
|
||||||
return item;
|
return item;
|
||||||
}));
|
}));
|
||||||
|
|
||||||
@@ -392,10 +341,11 @@ export const underWaterReducer:(set:(fn: (state: UnderWaterType) => UnderWaterTy
|
|||||||
시설명: item.bscFctNm,
|
시설명: item.bscFctNm,
|
||||||
주소: item.daddr,
|
주소: item.daddr,
|
||||||
시설용량: item.fctCpc,
|
시설용량: item.fctCpc,
|
||||||
|
평균유입하수량 :item.inflAmnt,
|
||||||
연간지하수유입량: item.underWaterInputYear,
|
연간지하수유입량: item.underWaterInputYear,
|
||||||
하절기지하수유입량: item.underWaterInputSummer,
|
하절기지하수유입량: item.underWaterInputSummer,
|
||||||
동절기지하수유입량: item.underWaterInputWinter,
|
동절기지하수유입량: item.underWaterInputWinter,
|
||||||
|
적정여부: item.properYn,
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}else{
|
}else{
|
||||||
@@ -425,7 +375,7 @@ export const underWaterReducer:(set:(fn: (state: UnderWaterType) => UnderWaterTy
|
|||||||
const res = await getFetch('fo', '/fclt/flow/' + bscFctCd + '/' + searchYear);
|
const res = await getFetch('fo', '/fclt/flow/' + bscFctCd + '/' + searchYear);
|
||||||
const monthData: SewageOccurDetailProps[] = [];
|
const monthData: SewageOccurDetailProps[] = [];
|
||||||
|
|
||||||
const calData = calRainEffectDay(res.data, 'SUNNY');
|
const calData = CalcRainEffect(res.data, 'SUNNY');
|
||||||
let tot = 0;
|
let tot = 0;
|
||||||
let cnt = 0;
|
let cnt = 0;
|
||||||
|
|
||||||
|
|||||||
@@ -14,6 +14,8 @@ export type UnderWaterProps = {
|
|||||||
rvbsn : string,
|
rvbsn : string,
|
||||||
lgbsn : string,
|
lgbsn : string,
|
||||||
mdmbsn : string,
|
mdmbsn : string,
|
||||||
|
inflAmnt : number | '',
|
||||||
|
properYn : string | '',
|
||||||
}
|
}
|
||||||
export interface UnderWaterInterface {
|
export interface UnderWaterInterface {
|
||||||
bscFctCd : string,
|
bscFctCd : string,
|
||||||
@@ -30,6 +32,8 @@ export interface UnderWaterInterface {
|
|||||||
rvbsn : string,
|
rvbsn : string,
|
||||||
lgbsn : string,
|
lgbsn : string,
|
||||||
mdmbsn : string,
|
mdmbsn : string,
|
||||||
|
inflAmnt : number | '',
|
||||||
|
properYn : string | '',
|
||||||
}
|
}
|
||||||
|
|
||||||
// 모달
|
// 모달
|
||||||
@@ -52,7 +56,9 @@ export interface ExcelType {
|
|||||||
시설명: string,
|
시설명: string,
|
||||||
주소: string,
|
주소: string,
|
||||||
시설용량: number,
|
시설용량: number,
|
||||||
|
평균유입하수량 : number | '',
|
||||||
연간지하수유입량: number | '',
|
연간지하수유입량: number | '',
|
||||||
하절기지하수유입량: number | '',
|
하절기지하수유입량: number | '',
|
||||||
동절기지하수유입량: number | '',
|
동절기지하수유입량: number | '',
|
||||||
|
적정여부: string | '',
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user