3중 멀티모듈 대응

This commit is contained in:
hyojun.choi 2025-04-03 16:28:58 +09:00
parent aa2685e558
commit 3f40725647

View File

@ -370,7 +370,20 @@ export const useTrestle = () => {
rack.value.moduleTpCd === leftRowsInfo.moduleTotalTp &&
rack.value.moduleRows === leftRowsInfo.rowsInfo.reduce((acc, row) => acc + row.count, 0)
)
} else {
} else if (leftRowsInfo.rowsInfo.length >= 2) {
//C1C2C3인 경우
if (rack.value.moduleTpCd.length === 6) {
// 변환 C1C2만 있는경우 C3 0개로 추가해준다.
let newLeftRowsInfo = normalizeModules(rack.value.moduleTpCd, leftRowsInfo)
return (
rack.value.moduleTpCd === newLeftRowsInfo.moduleTotalTp &&
rack.value.moduleRows === newLeftRowsInfo.rowsInfo.reduce((acc, row) => acc + row.count, 0) &&
Number(rack.value.moduleTpRows1) === newLeftRowsInfo.rowsInfo[0].count &&
Number(rack.value.moduleTpRows2) === newLeftRowsInfo.rowsInfo[1].count &&
Number(rack.value.moduleTpRows3) === newLeftRowsInfo.rowsInfo[2].count
)
}
return (
rack.value.moduleTpCd === leftRowsInfo.moduleTotalTp &&
rack.value.moduleRows === leftRowsInfo.rowsInfo.reduce((acc, row) => acc + row.count, 0) &&
@ -387,7 +400,19 @@ export const useTrestle = () => {
rack.value.moduleTpCd === rightRowsInfo.moduleTotalTp &&
rack.value.moduleRows === rightRowsInfo.rowsInfo.reduce((acc, row) => acc + row.count, 0)
)
} else {
} else if (rightRowsInfo.rowsInfo.length === 2) {
if (rack.value.moduleTpCd.length === 6) {
// 변환 C1C2만 있는경우 C3 0개로 추가해준다.
let newRightRowsInfo = normalizeModules(rack.value.moduleTpCd, rightRowsInfo)
return (
rack.value.moduleTpCd === newRightRowsInfo.moduleTotalTp &&
rack.value.moduleRows === newRightRowsInfo.rowsInfo.reduce((acc, row) => acc + row.count, 0) &&
Number(rack.value.moduleTpRows1) === newRightRowsInfo.rowsInfo[0].count &&
Number(rack.value.moduleTpRows2) === newRightRowsInfo.rowsInfo[1].count &&
Number(rack.value.moduleTpRows3) === newRightRowsInfo.rowsInfo[2].count
)
}
return (
rack.value.moduleTpCd === rightRowsInfo.moduleTotalTp &&
rack.value.moduleRows === rightRowsInfo.rowsInfo.reduce((acc, row) => acc + row.count, 0) &&
@ -404,7 +429,19 @@ export const useTrestle = () => {
rack.value.moduleTpCd === centerRowsInfo.moduleTotalTp &&
rack.value.moduleRows === centerRowsInfo.rowsInfo.reduce((acc, row) => acc + row.count, 0)
)
} else {
} else if (centerRowsInfo.rowsInfo.length === 2) {
if (rack.value.moduleTpCd.length === 6) {
// 변환 C1C2만 있는경우 C3 0개로 추가해준다.
let newCenterRowsInfo = normalizeModules(rack.value.moduleTpCd, centerRowsInfo)
return (
rack.value.moduleTpCd === newCenterRowsInfo.moduleTotalTp &&
rack.value.moduleRows === newCenterRowsInfo.rowsInfo.reduce((acc, row) => acc + row.count, 0) &&
Number(rack.value.moduleTpRows1) === newCenterRowsInfo.rowsInfo[0].count &&
Number(rack.value.moduleTpRows2) === newCenterRowsInfo.rowsInfo[1].count &&
Number(rack.value.moduleTpRows3) === newCenterRowsInfo.rowsInfo[2].count
)
}
return (
rack.value.moduleTpCd === centerRowsInfo.moduleTotalTp &&
rack.value.moduleRows === centerRowsInfo.rowsInfo.reduce((acc, row) => acc + row.count, 0) &&
@ -499,7 +536,19 @@ export const useTrestle = () => {
rack.value.moduleTpCd === leftRowsInfo.moduleTotalTp &&
rack.value.moduleRows === leftRowsInfo.rowsInfo.reduce((acc, row) => acc + row.count, 0)
)
} else {
} else if (leftRowsInfo.rowsInfo.length === 2) {
if (rack.value.moduleTpCd.length === 6) {
// 변환 C1C2만 있는경우 C3 0개로 추가해준다.
let newLeftRowsInfo = normalizeModules(rack.value.moduleTpCd, leftRowsInfo)
return (
rack.value.moduleTpCd === newLeftRowsInfo.moduleTotalTp &&
rack.value.moduleRows === newLeftRowsInfo.rowsInfo.reduce((acc, row) => acc + row.count, 0) &&
Number(rack.value.moduleTpRows1) === newLeftRowsInfo.rowsInfo[0].count &&
Number(rack.value.moduleTpRows2) === newLeftRowsInfo.rowsInfo[1].count &&
Number(rack.value.moduleTpRows3) === newLeftRowsInfo.rowsInfo[2].count
)
}
return (
rack.value.moduleTpCd === leftRowsInfo.moduleTotalTp &&
rack.value.moduleRows === leftRowsInfo.rowsInfo.reduce((acc, row) => acc + row.count, 0) &&
@ -575,7 +624,19 @@ export const useTrestle = () => {
rack.value.moduleTpCd === rightRowsInfo.moduleTotalTp &&
rack.value.moduleRows === rightRowsInfo.rowsInfo.reduce((acc, row) => acc + row.count, 0)
)
} else {
} else if (rightRowsInfo.rowsInfo.length === 2) {
if (rack.value.moduleTpCd.length === 6) {
// 변환 C1C2만 있는경우 C3 0개로 추가해준다.
let newRightRowsInfo = normalizeModules(rack.value.moduleTpCd, rightRowsInfo)
return (
rack.value.moduleTpCd === newRightRowsInfo.moduleTotalTp &&
rack.value.moduleRows === newRightRowsInfo.rowsInfo.reduce((acc, row) => acc + row.count, 0) &&
Number(rack.value.moduleTpRows1) === newRightRowsInfo.rowsInfo[0].count &&
Number(rack.value.moduleTpRows2) === newRightRowsInfo.rowsInfo[1].count &&
Number(rack.value.moduleTpRows3) === newRightRowsInfo.rowsInfo[2].count
)
}
return (
rack.value.moduleTpCd === rightRowsInfo.moduleTotalTp &&
rack.value.moduleRows === rightRowsInfo.rowsInfo.reduce((acc, row) => acc + row.count, 0) &&
@ -635,6 +696,31 @@ export const useTrestle = () => {
return { moduleTotalTp, rowsInfo }
}
function normalizeModules(rackTpCd, data) {
// rackTpCd를 숫자를 기준으로 자른다.
const allModules = rackTpCd.match(/[A-Za-z]+\d+/g) || [] // 모든 모듈 유형
// 현재 존재하는 모듈 유형을 추출
const existingModules = data.rowsInfo.map((row) => row.moduleTpCd)
const result = { ...data, rowsInfo: [...data.rowsInfo] }
// 없는 모듈을 추가 (count: 0)
allModules.forEach((module) => {
if (!existingModules.includes(module)) {
result.rowsInfo.push({ moduleTpCd: module, count: 0 })
}
})
// rowsInfo를 C1, C2, C3 순서로 정렬
result.rowsInfo.sort((a, b) => allModules.indexOf(a.moduleTpCd) - allModules.indexOf(b.moduleTpCd))
// moduleTotalTp를 C1C2C3로 설정
result.moduleTotalTp = allModules.join('')
return result
}
// itemList 조회 후 estimateParam에 저장
const getEstimateData = async () => {
const surfaces = canvas.getObjects().filter((obj) => obj.name === POLYGON_TYPE.MODULE_SETUP_SURFACE)