부동 소수점 버그 수정
This commit is contained in:
parent
907b9cbbc3
commit
f73faa2444
@ -15,6 +15,7 @@ import { useContext } from 'react'
|
|||||||
import { useRecoilState, useRecoilValue, useSetRecoilState } from 'recoil'
|
import { useRecoilState, useRecoilValue, useSetRecoilState } from 'recoil'
|
||||||
import { useMessage } from './useMessage'
|
import { useMessage } from './useMessage'
|
||||||
import { useCanvasPopupStatusController } from './common/useCanvasPopupStatusController'
|
import { useCanvasPopupStatusController } from './common/useCanvasPopupStatusController'
|
||||||
|
import Big from 'big.js'
|
||||||
|
|
||||||
export function useCircuitTrestle() {
|
export function useCircuitTrestle() {
|
||||||
const [makers, setMakers] = useRecoilState(makersState)
|
const [makers, setMakers] = useRecoilState(makersState)
|
||||||
@ -207,7 +208,7 @@ export function useCircuitTrestle() {
|
|||||||
surface.modules.forEach((module) => {
|
surface.modules.forEach((module) => {
|
||||||
if (!surfaceObjects[surface.id][module.moduleInfo.itemId]) {
|
if (!surfaceObjects[surface.id][module.moduleInfo.itemId]) {
|
||||||
// 지붕면에 모듈 존재 여부
|
// 지붕면에 모듈 존재 여부
|
||||||
surfaceObjects[surface.id][module.moduleInfo.itemId] = 0 // 모듈 초기화
|
surfaceObjects[surface.id][module.moduleInfo.itemId] = new Big(0) // 모듈 초기화
|
||||||
}
|
}
|
||||||
|
|
||||||
surfaceObjects[surface.id][module.moduleInfo.itemId]++
|
surfaceObjects[surface.id][module.moduleInfo.itemId]++
|
||||||
@ -224,10 +225,18 @@ export function useCircuitTrestle() {
|
|||||||
if (!surfaceObjects[surface.id].circuits[module.circuitNumber].circuits[module.moduleInfo.itemId]) {
|
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] = 0
|
||||||
}
|
}
|
||||||
surfaceObjects[surface.id].circuits[module.circuitNumber].circuits[module.moduleInfo.itemId]++
|
surfaceObjects[surface.id].circuits[module.circuitNumber].circuits[module.moduleInfo.itemId] = Big(
|
||||||
surfaceObjects[surface.id].circuits[module.circuitNumber].circuits.wpOut += +module.moduleInfo.wpOut
|
surfaceObjects[surface.id].circuits[module.circuitNumber].circuits[module.moduleInfo.itemId],
|
||||||
surfaceObjects[surface.id].wpOut -= +module.moduleInfo.wpOut
|
)
|
||||||
surfaceObjects[surface.id][module.moduleInfo.itemId]--
|
.plus(1)
|
||||||
|
.toNumber()
|
||||||
|
surfaceObjects[surface.id].circuits[module.circuitNumber].circuits.wpOut = Big(
|
||||||
|
surfaceObjects[surface.id].circuits[module.circuitNumber].circuits.wpOut,
|
||||||
|
)
|
||||||
|
.plus(+module.moduleInfo.wpOut)
|
||||||
|
.toNumber()
|
||||||
|
surfaceObjects[surface.id].wpOut = Big(surfaceObjects[surface.id].wpOut).minus(+module.moduleInfo.wpOut).toNumber()
|
||||||
|
surfaceObjects[surface.id][module.moduleInfo.itemId] = Big(surfaceObjects[surface.id][module.moduleInfo.itemId]).minus(1).toNumber()
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
@ -236,7 +245,7 @@ export function useCircuitTrestle() {
|
|||||||
let tempRow = {
|
let tempRow = {
|
||||||
name: surfaceObjects[key].roofSurface,
|
name: surfaceObjects[key].roofSurface,
|
||||||
circuit: surfaceObjects[key].circuit,
|
circuit: surfaceObjects[key].circuit,
|
||||||
wpOut: parseFloat(surfaceObjects[key].wpOut / 1000),
|
wpOut: parseFloat(Big(surfaceObjects[key].wpOut).div(1000).toNumber()),
|
||||||
}
|
}
|
||||||
selectedModules.itemList.forEach((module) => {
|
selectedModules.itemList.forEach((module) => {
|
||||||
tempRow[module.itemId] = surfaceObjects[key][module.itemId]
|
tempRow[module.itemId] = surfaceObjects[key][module.itemId]
|
||||||
@ -247,7 +256,7 @@ export function useCircuitTrestle() {
|
|||||||
let row = {
|
let row = {
|
||||||
name: surfaceObjects[key].roofSurface,
|
name: surfaceObjects[key].roofSurface,
|
||||||
circuit: surfaceObjects[key].circuits[circuit].circuit,
|
circuit: surfaceObjects[key].circuits[circuit].circuit,
|
||||||
wpOut: parseFloat(surfaceObjects[key].circuits[circuit].circuits.wpOut / 1000),
|
wpOut: parseFloat(Big(surfaceObjects[key].circuits[circuit].circuits.wpOut).div(1000).toNumber()),
|
||||||
}
|
}
|
||||||
selectedModules.itemList.forEach((module) => {
|
selectedModules.itemList.forEach((module) => {
|
||||||
row[module.itemId] = surfaceObjects[key].circuits[circuit].circuits[module.itemId]
|
row[module.itemId] = surfaceObjects[key].circuits[circuit].circuits[module.itemId]
|
||||||
@ -255,14 +264,24 @@ export function useCircuitTrestle() {
|
|||||||
tempRows.push(row)
|
tempRows.push(row)
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
let ftWpOut = 0
|
||||||
|
tempRows.forEach((row) => {
|
||||||
|
ftWpOut = Big(ftWpOut).plus(+row.wpOut).toNumber()
|
||||||
|
})
|
||||||
|
|
||||||
const tempFooter = {
|
const tempFooter = {
|
||||||
name: getMessage('modal.panel.batch.statistic.total'),
|
name: getMessage('modal.panel.batch.statistic.total'),
|
||||||
circuit: '-',
|
circuit: '-',
|
||||||
wpOut: tempRows.reduce((acc, row) => acc + row.wpOut, 0),
|
wpOut: ftWpOut,
|
||||||
}
|
}
|
||||||
selectedModules.itemList.forEach((module) => {
|
selectedModules.itemList.forEach((module) => {
|
||||||
tempFooter[module.itemId] = tempRows.reduce((acc, row) => acc + (row[module.itemId] ? row[module.itemId] : 0), 0)
|
let wpOut = 0
|
||||||
|
tempRows.forEach((row) => {
|
||||||
|
wpOut = Big(wpOut)
|
||||||
|
.plus(+row[module.itemId] ?? 0)
|
||||||
|
.toNumber()
|
||||||
|
})
|
||||||
|
tempFooter[module.itemId] = wpOut
|
||||||
})
|
})
|
||||||
canvas.getObjects().filter((obj) => obj.name === POLYGON_TYPE.MODULE_SETUP_SURFACE)
|
canvas.getObjects().filter((obj) => obj.name === POLYGON_TYPE.MODULE_SETUP_SURFACE)
|
||||||
setModuleStatistics({ header: tempHeader, rows: tempRows.filter((row) => row.wpOut !== 0), footer: tempFooter })
|
setModuleStatistics({ header: tempHeader, rows: tempRows.filter((row) => row.wpOut !== 0), footer: tempFooter })
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user