수동 할당 집계표 수정

This commit is contained in:
Minsiki 2025-01-30 18:02:56 +09:00
parent fa57be3c29
commit 4ddd1f7fb1
4 changed files with 139 additions and 38 deletions

View File

@ -18,6 +18,7 @@ import { canvasState } from '@/store/canvasAtom'
import { useTrestle } from '@/hooks/module/useTrestle'
import { selectedModuleState } from '@/store/selectedModuleOptions'
import { v4 as uuidv4 } from 'uuid'
const ALLOCATION_TYPE = {
AUTO: 'auto',
@ -76,7 +77,14 @@ export default function CircuitTrestleSetting({ id }) {
getPcsAutoRecommendList(params).then((res) => {
if (res.data?.pcsItemList) {
setModels(res.data.pcsItemList)
setModels(
res.data.pcsItemList.map((model) => {
return {
...model,
id: uuidv4(),
}
}),
)
setTabNum(2)
} else {
swalFire({
@ -190,11 +198,33 @@ export default function CircuitTrestleSetting({ id }) {
const onPassivityAllocation = () => {
if (selectedModels.length === 0) {
swalFire({
title: '파워 컨디셔너를 추가해 주세요.',
type: 'alert',
const params = {
...getOptYn(),
useModuleItemList: getUseModuleItemList(),
roofSurfaceList: getRoofSurfaceList(),
pcsItemList: getPcsItemList(),
}
getPcsAutoRecommendList(params).then((res) => {
if (res.data?.pcsItemList) {
const itemList = models.filter((model) => {
return res.data?.pcsItemList.map((item) => item.itemId).includes(model.itemId)
})
setSelectedModels(
itemList.map((model) => {
return {
...model,
id: uuidv4(),
}
}),
)
} else {
swalFire({
title: '파워컨디셔너를 추가해 주세요.',
type: 'alert',
})
}
})
return
} else if (pcsCheck.max) {
const moduleStdQty = selectedModels.reduce((acc, model) => {
return acc + parseInt(model.moduleStdQty)

View File

@ -64,6 +64,7 @@ export default function PowerConditionalSelect(props) {
useEffect(() => {
if (makers.length === 0) {
getPcsMakerList().then((res) => {
console.log('getPcsMakerList', res.data)
setMakers(res.data)
})
}
@ -90,6 +91,7 @@ export default function PowerConditionalSelect(props) {
}
const onCheckSeries = (data) => {
console.log('data', data)
const copySeries = series.map((s) => {
return {
...s,
@ -97,12 +99,19 @@ export default function PowerConditionalSelect(props) {
}
})
setSeries(copySeries)
console.log('copySeries', copySeries)
handleSetmodels(copySeries.filter((s) => s.selected))
}
const handleSetmodels = (series) => {
const pcsMkrCd = series[0]?.pcsMkrCd
const pcsSerList = series.map((series) => {
const handleSetmodels = (selectedSeries) => {
console.log('series', selectedSeries)
if (selectedSeries.length === 0) {
setModels([])
setSelectedModels([])
return
}
const pcsMkrCd = selectedSeries[0]?.pcsMkrCd
const pcsSerList = selectedSeries.map((series) => {
return { pcsSerCd: series.pcsSerCd }
})
const moduleItemList = selectedModules.itemList?.map((module) => {
@ -123,11 +132,10 @@ export default function PowerConditionalSelect(props) {
}
}),
)
return
} else {
setModels([])
setSelectedModels([])
}
setModels([])
setSelectedModels([])
})
}
@ -151,10 +159,11 @@ export default function PowerConditionalSelect(props) {
const onChangeMaker = (option) => {
if (option) {
setModels(null)
setModels([])
setSelectedMaker(option)
getPcsMakerList(option).then((res) => {
console.log('getPcsMakerList(series)', res.data)
setSeries(
res.data.map((series) => {
return { ...series, selected: false }

View File

@ -10,10 +10,6 @@ import { useContext, useEffect, useState } from 'react'
import { useRecoilValue } from 'recoil'
export default function PassivityCircuitAllocation(props) {
// getOptYn,
// getUseModuleItemList,
// getSelectModelList,
// getRoofSurfaceList,
const {
tabNum,
setTabNum,
@ -42,6 +38,7 @@ export default function PassivityCircuitAllocation(props) {
useEffect(() => {
console.log('header, rows', header, rows)
console.log('selectedModels', selectedModels)
// setSurfaceInfo()
setTableData()
if (!managementState) {
@ -238,7 +235,7 @@ export default function PassivityCircuitAllocation(props) {
return {
roofSurfaceId: surface.id,
roofSurface: surface.direction,
roofSurfaceIncl: surface.incl,
roofSurfaceIncl: canvas.getObjects().filter((obj) => obj.id === surface.parentId)[0].pitch,
moduleList: surface.modules.map((module) => {
return {
itemId: module.moduleInfo.itemId,
@ -300,6 +297,7 @@ export default function PassivityCircuitAllocation(props) {
setTargetModules([])
setCircuitNumber(+circuitNumber + 1)
setTableData()
})
}
@ -323,21 +321,85 @@ export default function PassivityCircuitAllocation(props) {
}),
{ name: '발전량(kW)', prop: 'wpOut' },
]
const tempRows = rows.map((row) => {
return {
name: '',
circuit: '',
...selectedModules.itemList.map((module) => {
return {
name: module.itemNm,
prop: module.itemId,
}
}),
wpOut: 0,
}
})
console.log('tempHeader', tempHeader)
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)
})
console.log('tempHeader, tempRows, tempFooter', tempHeader, tempRows, tempFooter)
setHeader(tempHeader)
setRows(tempRows.filter((row) => row.wpOut !== 0))
setFooter(tempFooter)
}
const initSelectedPcsCircuitNumber = () => {
@ -411,9 +473,9 @@ export default function PassivityCircuitAllocation(props) {
</tr>
))}
<tr>
{footer.map((footer, index) => (
<td className="al-c" key={'footer' + index}>
{footer}
{header.map((header, i) => (
<td className="al-c" key={'footer' + i}>
{footer[header.prop]}
</td>
))}
</tr>
@ -437,7 +499,7 @@ export default function PassivityCircuitAllocation(props) {
name="radio01"
id={`ra0${index + 1}`}
value={model}
checked={selectedPcs.id === model.id}
checked={selectedPcs?.id === model.id}
onChange={() => setSelectedPcs(model)}
/>
<label htmlFor={`ra0${index + 1}`}>
@ -475,7 +537,7 @@ export default function PassivityCircuitAllocation(props) {
<div className="input-grid mr5" style={{ width: '70px' }}>
<input
type="text"
className="input-origin block"
className="block input-origin"
value={circuitNumber}
min={1}
max={99}

View File

@ -147,7 +147,7 @@ export function useMasterController() {
],
}
return await post({ url: '/api/v1/master/getPcsSeriesItemList', data: test }).then((res) => {
return await post({ url: '/api/v1/master/getPcsSeriesItemList', data: params }).then((res) => {
return res
})
}