From 14d6c91f37343c501dfa40253d2b77061f454b00 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=EB=AF=BC=EC=8B=9D?= <43837214+Minsiki@users.noreply.github.com> Date: Wed, 5 Feb 2025 09:55:12 +0900 Subject: [PATCH] =?UTF-8?q?=EC=A7=91=EA=B3=84=ED=91=9C=20=EC=88=98?= =?UTF-8?q?=EC=A0=95,=20W=EB=8B=A8=EC=9C=84=20->=20kW?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/floor-plan/CanvasFrame.jsx | 1 - .../circuitTrestle/CircuitTrestleSetting.jsx | 18 ++- .../step/type/PassivityCircuitAllocation.jsx | 133 ++---------------- src/hooks/module/useModule.js | 93 +++++++++++- src/hooks/module/useModuleBasicSetting.js | 6 +- src/store/circuitTrestleAtom.js | 5 +- 6 files changed, 125 insertions(+), 131 deletions(-) diff --git a/src/components/floor-plan/CanvasFrame.jsx b/src/components/floor-plan/CanvasFrame.jsx index 31698b1a..85315a23 100644 --- a/src/components/floor-plan/CanvasFrame.jsx +++ b/src/components/floor-plan/CanvasFrame.jsx @@ -28,7 +28,6 @@ export default function CanvasFrame() { const { currentCanvasPlan } = usePlan() const totalDisplay = useRecoilValue(totalDisplaySelector) // 집계표 표시 여부 const { setIsGlobalLoading } = useContext(QcastContext) - const [moduleStatistics, setModuleStatistics] = useRecoilState(moduleStatisticsState) const reset = useResetRecoilState(moduleStatisticsState) const loadCanvas = () => { if (canvas) { diff --git a/src/components/floor-plan/modal/circuitTrestle/CircuitTrestleSetting.jsx b/src/components/floor-plan/modal/circuitTrestle/CircuitTrestleSetting.jsx index adeb0300..2c5927fe 100644 --- a/src/components/floor-plan/modal/circuitTrestle/CircuitTrestleSetting.jsx +++ b/src/components/floor-plan/modal/circuitTrestle/CircuitTrestleSetting.jsx @@ -273,22 +273,28 @@ export default function CircuitTrestleSetting({ id }) { id: uuidv4(), } }) - const PcsVoltageChkParams = { + const pcsVoltageChkParams = { ...getOptYn(), useModuleItemList: getUseModuleItemList(), roofSurfaceList: getRoofSurfaceList(), pcsItemList: getPcsItemList(), } setSelectedModels(selectedModels) - getPcsVoltageChk(PcsVoltageChkParams).then((res) => {}) + getPcsVoltageChk(pcsVoltageChkParams).then((res) => { + setAllocationType(ALLOCATION_TYPE.PASSIVITY) + }) } else { swalFire({ - title: '파워컨디셔너를 추가해 주세요.', + title: res.result.resultMsg, type: 'alert', + confirmFn: () => { + return + }, }) + return } }) - } else if (pcsCheck.max) { + } else { const moduleStdQty = selectedModels.reduce((acc, model) => { return acc + parseInt(model.moduleStdQty) }, 0) @@ -306,9 +312,9 @@ export default function CircuitTrestleSetting({ id }) { }) return } - } - setAllocationType(ALLOCATION_TYPE.PASSIVITY) + setAllocationType(ALLOCATION_TYPE.PASSIVITY) + } } // StepUp에서 선택된 값들을 처리하는 함수 수정 diff --git a/src/components/floor-plan/modal/circuitTrestle/step/type/PassivityCircuitAllocation.jsx b/src/components/floor-plan/modal/circuitTrestle/step/type/PassivityCircuitAllocation.jsx index 7cbca2da..aa151d9c 100644 --- a/src/components/floor-plan/modal/circuitTrestle/step/type/PassivityCircuitAllocation.jsx +++ b/src/components/floor-plan/modal/circuitTrestle/step/type/PassivityCircuitAllocation.jsx @@ -1,6 +1,7 @@ import { GlobalDataContext } from '@/app/GlobalDataProvider' import { POLYGON_TYPE } from '@/common/common' import { useMasterController } from '@/hooks/common/useMasterController' +import { useModule } from '@/hooks/module/useModule' import { useMessage } from '@/hooks/useMessage' import { useSwal } from '@/hooks/useSwal' import { canvasState } from '@/store/canvasAtom' @@ -11,37 +12,29 @@ import { useRecoilState, useRecoilValue } from 'recoil' export default function PassivityCircuitAllocation(props) { const { - tabNum, - setTabNum, selectedModels, setSelectedModels, getOptYn: getApiProps, getUseModuleItemList: getSelectedModuleList, getSelectModelList: getSelectModelList, - getRoofSurfaceList, - getModelList, } = props const { swalFire } = useSwal() const { getMessage } = useMessage() const canvas = useRecoilValue(canvasState) const { managementState, setManagementState, managementStateLoaded } = useContext(GlobalDataContext) const selectedModules = useRecoilValue(selectedModuleState) - const [moduleStatistics, setModuleStatistics] = useRecoilState(moduleStatisticsState) - // const [totalWpout, setTotalWpout] = useState(0) const [selectedPcs, setSelectedPcs] = useState(selectedModels[0]) - // const { header, rows: row } = moduleStatistics - const [header, setHeader] = useState(moduleStatistics.header) - const [rows, setRows] = useState(moduleStatistics.rows) - const [footer, setFooter] = useState(['합계']) + const { header, rows, footer } = useRecoilValue(moduleStatisticsState) const [circuitNumber, setCircuitNumber] = useState(1) const [targetModules, setTargetModules] = useState([]) + const { setModuleStatisticsData } = useModule() const { getPcsManualConfChk } = useMasterController() useEffect(() => { console.log('header, rows', header, rows) console.log('selectedModels', selectedModels) // setSurfaceInfo() - setTableData() + setModuleStatisticsData() if (!managementState) { setManagementState(managementStateLoaded) } @@ -158,7 +151,14 @@ export default function PassivityCircuitAllocation(props) { } const handleCircuitNumberFix = () => { - let uniqueCircuitNumbers = null + let uniqueCircuitNumbers = [ + ...new Set( + canvas + .getObjects() + .filter((obj) => obj.name === POLYGON_TYPE.MODULE && obj.circuitNumber) + .map((obj) => obj.circuitNumber), + ), + ] if (!circuitNumber || circuitNumber === 0) { swalFire({ text: '회로번호를 1 이상입력해주세요.', @@ -174,15 +174,6 @@ export default function PassivityCircuitAllocation(props) { }) return } else if (selectedModels.length > 1) { - uniqueCircuitNumbers = [ - ...new Set( - canvas - .getObjects() - .filter((obj) => obj.name === POLYGON_TYPE.MODULE && obj.circuitNumber) - .map((obj) => obj.circuitNumber), - ), - ] - let result = false uniqueCircuitNumbers.forEach((number) => { if ( @@ -335,7 +326,7 @@ export default function PassivityCircuitAllocation(props) { setTargetModules([]) setCircuitNumber(+circuitNumber + 1) - setTableData() + setModuleStatisticsData() }) } @@ -347,100 +338,6 @@ export default function PassivityCircuitAllocation(props) { } } - const setTableData = () => { - const tempHeader = [ - { name: getMessage('simulator.table.sub1'), prop: 'name' }, - { name: getMessage('modal.circuit.trestle.setting.circuit.allocation.passivity.circuit'), prop: 'circuit' }, - ...selectedModules.itemList.map((module) => { - return { - name: module.itemNm, - prop: module.itemId, - } - }), - { name: `${getMessage('modal.panel.batch.statistic.power.generation.amount')}(kW)`, prop: 'wpOut' }, - ] - - const surfaces = canvas.getObjects().filter((obj) => obj.name === POLYGON_TYPE.MODULE_SETUP_SURFACE) - const surfaceIds = surfaces.map((surface) => surface.parentId) - const surfaceObjects = {} - const rows = surfaces.map((surface) => { - const moduleObject = {} - surfaceObjects[surface.id] = { - roofSurface: canvas.getObjects().filter((obj) => obj.id === surface.parentId)[0].directionText, - circuit: '-', - amount: 0, - wpOut: 0, - circuits: {}, - } - - surface.modules.forEach((module) => { - if (!surfaceObjects[surface.id][module.moduleInfo.itemId]) { - // 지붕면에 모듈 존재 여부 - surfaceObjects[surface.id][module.moduleInfo.itemId] = 0 // 모듈 초기화 - } - - surfaceObjects[surface.id][module.moduleInfo.itemId]++ - surfaceObjects[surface.id].wpOut += +module.moduleInfo.wpOut - if (module.circuit) { - if (!surfaceObjects[surface.id].circuits[module.circuitNumber]) { - surfaceObjects[surface.id].circuits[module.circuitNumber] = { - circuit: module.circuitNumber, - wpOut: 0, - circuits: { wpOut: 0 }, - } - - if (!surfaceObjects[surface.id].circuits[module.circuitNumber].circuits[module.moduleInfo.itemId]) { - surfaceObjects[surface.id].circuits[module.circuitNumber].circuits[module.moduleInfo.itemId] = 0 - } - } - surfaceObjects[surface.id].circuits[module.circuitNumber].circuits[module.moduleInfo.itemId]++ - surfaceObjects[surface.id].circuits[module.circuitNumber].circuits.wpOut += +module.moduleInfo.wpOut - surfaceObjects[surface.id].wpOut -= +module.moduleInfo.wpOut - surfaceObjects[surface.id][module.moduleInfo.itemId]-- - } - }) - }) - console.log('rows', rows) - console.log('surfaceObjects', surfaceObjects) - let tempRows = [] - Object.keys(surfaceObjects).forEach((key) => { - let tempRow = { - name: surfaceObjects[key].roofSurface, - circuit: surfaceObjects[key].circuit, - wpOut: surfaceObjects[key].wpOut, - } - selectedModules.itemList.forEach((module) => { - tempRow[module.itemId] = surfaceObjects[key][module.itemId] - }) - tempRows.push(tempRow) - - Object.keys(surfaceObjects[key].circuits).forEach((circuit) => { - let row = { - name: surfaceObjects[key].roofSurface, - circuit: surfaceObjects[key].circuits[circuit].circuit, - wpOut: surfaceObjects[key].circuits[circuit].circuits.wpOut, - } - selectedModules.itemList.forEach((module) => { - row[module.itemId] = surfaceObjects[key].circuits[circuit].circuits[module.itemId] - }) - tempRows.push(row) - }) - }) - const tempFooter = { - name: '총합', - circuit: '-', - wpOut: tempRows.reduce((acc, row) => acc + row.wpOut, 0), - } - selectedModules.itemList.forEach((module) => { - tempFooter[module.itemId] = tempRows.reduce((acc, row) => acc + row[module.itemId], 0) - }) - - setHeader(tempHeader) - setRows(tempRows.filter((row) => row.wpOut !== 0)) - setFooter(tempFooter) - setModuleStatistics({ header: tempHeader, rows: tempRows.filter((row) => row.wpOut !== 0), footer: tempFooter }) - } - const initSelectedPcsCircuitNumber = () => { swalFire({ title: getMessage('modal.circuit.trestle.setting.circuit.allocation.passivity.init.info'), @@ -516,9 +413,7 @@ export default function PassivityCircuitAllocation(props) {