수동 할당 집계표 수정
This commit is contained in:
parent
fa57be3c29
commit
4ddd1f7fb1
@ -18,6 +18,7 @@ import { canvasState } from '@/store/canvasAtom'
|
|||||||
|
|
||||||
import { useTrestle } from '@/hooks/module/useTrestle'
|
import { useTrestle } from '@/hooks/module/useTrestle'
|
||||||
import { selectedModuleState } from '@/store/selectedModuleOptions'
|
import { selectedModuleState } from '@/store/selectedModuleOptions'
|
||||||
|
import { v4 as uuidv4 } from 'uuid'
|
||||||
|
|
||||||
const ALLOCATION_TYPE = {
|
const ALLOCATION_TYPE = {
|
||||||
AUTO: 'auto',
|
AUTO: 'auto',
|
||||||
@ -76,7 +77,14 @@ export default function CircuitTrestleSetting({ id }) {
|
|||||||
|
|
||||||
getPcsAutoRecommendList(params).then((res) => {
|
getPcsAutoRecommendList(params).then((res) => {
|
||||||
if (res.data?.pcsItemList) {
|
if (res.data?.pcsItemList) {
|
||||||
setModels(res.data.pcsItemList)
|
setModels(
|
||||||
|
res.data.pcsItemList.map((model) => {
|
||||||
|
return {
|
||||||
|
...model,
|
||||||
|
id: uuidv4(),
|
||||||
|
}
|
||||||
|
}),
|
||||||
|
)
|
||||||
setTabNum(2)
|
setTabNum(2)
|
||||||
} else {
|
} else {
|
||||||
swalFire({
|
swalFire({
|
||||||
@ -190,11 +198,33 @@ export default function CircuitTrestleSetting({ id }) {
|
|||||||
|
|
||||||
const onPassivityAllocation = () => {
|
const onPassivityAllocation = () => {
|
||||||
if (selectedModels.length === 0) {
|
if (selectedModels.length === 0) {
|
||||||
|
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({
|
swalFire({
|
||||||
title: '파워컨디셔너를 추가해 주세요.',
|
title: '파워컨디셔너를 추가해 주세요.',
|
||||||
type: 'alert',
|
type: 'alert',
|
||||||
})
|
})
|
||||||
return
|
}
|
||||||
|
})
|
||||||
} else if (pcsCheck.max) {
|
} else if (pcsCheck.max) {
|
||||||
const moduleStdQty = selectedModels.reduce((acc, model) => {
|
const moduleStdQty = selectedModels.reduce((acc, model) => {
|
||||||
return acc + parseInt(model.moduleStdQty)
|
return acc + parseInt(model.moduleStdQty)
|
||||||
|
|||||||
@ -64,6 +64,7 @@ export default function PowerConditionalSelect(props) {
|
|||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (makers.length === 0) {
|
if (makers.length === 0) {
|
||||||
getPcsMakerList().then((res) => {
|
getPcsMakerList().then((res) => {
|
||||||
|
console.log('getPcsMakerList', res.data)
|
||||||
setMakers(res.data)
|
setMakers(res.data)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@ -90,6 +91,7 @@ export default function PowerConditionalSelect(props) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const onCheckSeries = (data) => {
|
const onCheckSeries = (data) => {
|
||||||
|
console.log('data', data)
|
||||||
const copySeries = series.map((s) => {
|
const copySeries = series.map((s) => {
|
||||||
return {
|
return {
|
||||||
...s,
|
...s,
|
||||||
@ -97,12 +99,19 @@ export default function PowerConditionalSelect(props) {
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
setSeries(copySeries)
|
setSeries(copySeries)
|
||||||
|
console.log('copySeries', copySeries)
|
||||||
handleSetmodels(copySeries.filter((s) => s.selected))
|
handleSetmodels(copySeries.filter((s) => s.selected))
|
||||||
}
|
}
|
||||||
|
|
||||||
const handleSetmodels = (series) => {
|
const handleSetmodels = (selectedSeries) => {
|
||||||
const pcsMkrCd = series[0]?.pcsMkrCd
|
console.log('series', selectedSeries)
|
||||||
const pcsSerList = series.map((series) => {
|
if (selectedSeries.length === 0) {
|
||||||
|
setModels([])
|
||||||
|
setSelectedModels([])
|
||||||
|
return
|
||||||
|
}
|
||||||
|
const pcsMkrCd = selectedSeries[0]?.pcsMkrCd
|
||||||
|
const pcsSerList = selectedSeries.map((series) => {
|
||||||
return { pcsSerCd: series.pcsSerCd }
|
return { pcsSerCd: series.pcsSerCd }
|
||||||
})
|
})
|
||||||
const moduleItemList = selectedModules.itemList?.map((module) => {
|
const moduleItemList = selectedModules.itemList?.map((module) => {
|
||||||
@ -123,11 +132,10 @@ export default function PowerConditionalSelect(props) {
|
|||||||
}
|
}
|
||||||
}),
|
}),
|
||||||
)
|
)
|
||||||
return
|
} else {
|
||||||
}
|
|
||||||
|
|
||||||
setModels([])
|
setModels([])
|
||||||
setSelectedModels([])
|
setSelectedModels([])
|
||||||
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -151,10 +159,11 @@ export default function PowerConditionalSelect(props) {
|
|||||||
|
|
||||||
const onChangeMaker = (option) => {
|
const onChangeMaker = (option) => {
|
||||||
if (option) {
|
if (option) {
|
||||||
setModels(null)
|
setModels([])
|
||||||
setSelectedMaker(option)
|
setSelectedMaker(option)
|
||||||
|
|
||||||
getPcsMakerList(option).then((res) => {
|
getPcsMakerList(option).then((res) => {
|
||||||
|
console.log('getPcsMakerList(series)', res.data)
|
||||||
setSeries(
|
setSeries(
|
||||||
res.data.map((series) => {
|
res.data.map((series) => {
|
||||||
return { ...series, selected: false }
|
return { ...series, selected: false }
|
||||||
|
|||||||
@ -10,10 +10,6 @@ import { useContext, useEffect, useState } from 'react'
|
|||||||
import { useRecoilValue } from 'recoil'
|
import { useRecoilValue } from 'recoil'
|
||||||
|
|
||||||
export default function PassivityCircuitAllocation(props) {
|
export default function PassivityCircuitAllocation(props) {
|
||||||
// getOptYn,
|
|
||||||
// getUseModuleItemList,
|
|
||||||
// getSelectModelList,
|
|
||||||
// getRoofSurfaceList,
|
|
||||||
const {
|
const {
|
||||||
tabNum,
|
tabNum,
|
||||||
setTabNum,
|
setTabNum,
|
||||||
@ -42,6 +38,7 @@ export default function PassivityCircuitAllocation(props) {
|
|||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
console.log('header, rows', header, rows)
|
console.log('header, rows', header, rows)
|
||||||
|
console.log('selectedModels', selectedModels)
|
||||||
// setSurfaceInfo()
|
// setSurfaceInfo()
|
||||||
setTableData()
|
setTableData()
|
||||||
if (!managementState) {
|
if (!managementState) {
|
||||||
@ -238,7 +235,7 @@ export default function PassivityCircuitAllocation(props) {
|
|||||||
return {
|
return {
|
||||||
roofSurfaceId: surface.id,
|
roofSurfaceId: surface.id,
|
||||||
roofSurface: surface.direction,
|
roofSurface: surface.direction,
|
||||||
roofSurfaceIncl: surface.incl,
|
roofSurfaceIncl: canvas.getObjects().filter((obj) => obj.id === surface.parentId)[0].pitch,
|
||||||
moduleList: surface.modules.map((module) => {
|
moduleList: surface.modules.map((module) => {
|
||||||
return {
|
return {
|
||||||
itemId: module.moduleInfo.itemId,
|
itemId: module.moduleInfo.itemId,
|
||||||
@ -300,6 +297,7 @@ export default function PassivityCircuitAllocation(props) {
|
|||||||
|
|
||||||
setTargetModules([])
|
setTargetModules([])
|
||||||
setCircuitNumber(+circuitNumber + 1)
|
setCircuitNumber(+circuitNumber + 1)
|
||||||
|
setTableData()
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -323,21 +321,85 @@ export default function PassivityCircuitAllocation(props) {
|
|||||||
}),
|
}),
|
||||||
{ name: '발전량(kW)', prop: 'wpOut' },
|
{ name: '발전량(kW)', prop: 'wpOut' },
|
||||||
]
|
]
|
||||||
const tempRows = rows.map((row) => {
|
|
||||||
return {
|
const surfaces = canvas.getObjects().filter((obj) => obj.name === POLYGON_TYPE.MODULE_SETUP_SURFACE)
|
||||||
name: '',
|
const surfaceIds = surfaces.map((surface) => surface.parentId)
|
||||||
circuit: '',
|
const surfaceObjects = {}
|
||||||
...selectedModules.itemList.map((module) => {
|
const rows = surfaces.map((surface) => {
|
||||||
return {
|
const moduleObject = {}
|
||||||
name: module.itemNm,
|
surfaceObjects[surface.id] = {
|
||||||
prop: module.itemId,
|
roofSurface: canvas.getObjects().filter((obj) => obj.id === surface.parentId)[0].directionText,
|
||||||
}
|
circuit: '-',
|
||||||
}),
|
amount: 0,
|
||||||
wpOut: 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)
|
||||||
|
|
||||||
console.log('tempHeader', tempHeader)
|
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 = () => {
|
const initSelectedPcsCircuitNumber = () => {
|
||||||
@ -411,9 +473,9 @@ export default function PassivityCircuitAllocation(props) {
|
|||||||
</tr>
|
</tr>
|
||||||
))}
|
))}
|
||||||
<tr>
|
<tr>
|
||||||
{footer.map((footer, index) => (
|
{header.map((header, i) => (
|
||||||
<td className="al-c" key={'footer' + index}>
|
<td className="al-c" key={'footer' + i}>
|
||||||
{footer}
|
{footer[header.prop]}
|
||||||
</td>
|
</td>
|
||||||
))}
|
))}
|
||||||
</tr>
|
</tr>
|
||||||
@ -437,7 +499,7 @@ export default function PassivityCircuitAllocation(props) {
|
|||||||
name="radio01"
|
name="radio01"
|
||||||
id={`ra0${index + 1}`}
|
id={`ra0${index + 1}`}
|
||||||
value={model}
|
value={model}
|
||||||
checked={selectedPcs.id === model.id}
|
checked={selectedPcs?.id === model.id}
|
||||||
onChange={() => setSelectedPcs(model)}
|
onChange={() => setSelectedPcs(model)}
|
||||||
/>
|
/>
|
||||||
<label htmlFor={`ra0${index + 1}`}>
|
<label htmlFor={`ra0${index + 1}`}>
|
||||||
@ -475,7 +537,7 @@ export default function PassivityCircuitAllocation(props) {
|
|||||||
<div className="input-grid mr5" style={{ width: '70px' }}>
|
<div className="input-grid mr5" style={{ width: '70px' }}>
|
||||||
<input
|
<input
|
||||||
type="text"
|
type="text"
|
||||||
className="input-origin block"
|
className="block input-origin"
|
||||||
value={circuitNumber}
|
value={circuitNumber}
|
||||||
min={1}
|
min={1}
|
||||||
max={99}
|
max={99}
|
||||||
|
|||||||
@ -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
|
return res
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user