양단 케이블 파라미터 추가
This commit is contained in:
parent
c0cbcd18a2
commit
d6d626f2d7
@ -708,7 +708,9 @@ export const useTrestle = () => {
|
|||||||
})
|
})
|
||||||
|
|
||||||
// trestles 배열에서 null인 경우 제거
|
// trestles 배열에서 null인 경우 제거
|
||||||
const params = { trestles, pcses, modules }
|
|
||||||
|
const dblCblTotCnt = getTotalConnectCableCnt()
|
||||||
|
const params = { trestles, pcses, modules, dblCblTotCnt }
|
||||||
|
|
||||||
//견적서 itemList 조회
|
//견적서 itemList 조회
|
||||||
const { data, data2, result } = await getQuotationItem(params)
|
const { data, data2, result } = await getQuotationItem(params)
|
||||||
@ -2270,9 +2272,9 @@ export const useTrestle = () => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
(Math.abs(m1X - m2X) <= maxX && Math.abs(m1Y - m2Y) <= maxY) ||
|
(Math.abs(m1X - m2X) < maxX - moduleIntvlHor / 10 && Math.abs(m1Y - m2Y) < maxY - moduleIntvlVer / 10) ||
|
||||||
(Math.abs(Math.abs(m1X - m2X) - maxX / 2) <= halfMaxX && Math.abs(Math.abs(m1Y - m2Y) - maxY) <= halfMaxY) ||
|
(Math.abs(Math.abs(m1X - m2X) - maxX / 2) < halfMaxX + 1 && Math.abs(Math.abs(m1Y - m2Y) - maxY) < halfMaxY + 1) ||
|
||||||
(Math.abs(Math.abs(m1X - m2X) - maxX) <= halfMaxX && Math.abs(Math.abs(m1Y - m2Y) - maxY / 2) <= halfMaxY)
|
(Math.abs(Math.abs(m1X - m2X) - maxX) < halfMaxX + 1 && Math.abs(Math.abs(m1Y - m2Y) - maxY / 2) < halfMaxY + 1)
|
||||||
)
|
)
|
||||||
} else if (direction === 'east' || direction === 'west') {
|
} else if (direction === 'east' || direction === 'west') {
|
||||||
maxX = height + moduleIntvlHor / 10
|
maxX = height + moduleIntvlHor / 10
|
||||||
@ -2292,9 +2294,9 @@ export const useTrestle = () => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
(Math.abs(m1X - m2X) <= maxY && Math.abs(m1Y - m2Y) <= maxX) ||
|
(Math.abs(m1X - m2X) <= maxY - moduleIntvlVer / 10 && Math.abs(m1Y - m2Y) <= maxX - moduleIntvlHor / 10) ||
|
||||||
(Math.abs(Math.abs(m1X - m2X) - maxY / 2) <= halfMaxY && Math.abs(Math.abs(m1Y - m2Y) - maxX) <= halfMaxX) ||
|
(Math.abs(Math.abs(m1X - m2X) - maxY / 2) < halfMaxY + 1 && Math.abs(Math.abs(m1Y - m2Y) - maxX) < halfMaxX + 1) ||
|
||||||
(Math.abs(Math.abs(m1X - m2X) - maxY) <= halfMaxY && Math.abs(Math.abs(m1Y - m2Y) - maxX / 2) <= halfMaxX)
|
(Math.abs(Math.abs(m1X - m2X) - maxY) < halfMaxY + 1 && Math.abs(Math.abs(m1Y - m2Y) - maxX / 2) < halfMaxX + 1)
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
@ -3035,6 +3037,73 @@ export const useTrestle = () => {
|
|||||||
return surfaces.every((surface) => surface.isComplete)
|
return surfaces.every((surface) => surface.isComplete)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const groupByType = (originArr = []) => {
|
||||||
|
const grouped = {}
|
||||||
|
const newArr = [...originArr]
|
||||||
|
|
||||||
|
// 타입별로 객체들을 분류
|
||||||
|
for (const item of newArr) {
|
||||||
|
if (!grouped[item.circuitNumber]) {
|
||||||
|
grouped[item.circuitNumber] = []
|
||||||
|
}
|
||||||
|
grouped[item.circuitNumber].push(item)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 객체를 배열로 변환
|
||||||
|
return Object.values(grouped)
|
||||||
|
}
|
||||||
|
|
||||||
|
function groupByCircuitAndSurface(arr) {
|
||||||
|
const circuitGroups = {}
|
||||||
|
|
||||||
|
for (const item of arr) {
|
||||||
|
const { circuitNumber, surfaceId } = item
|
||||||
|
if (!circuitGroups[circuitNumber]) {
|
||||||
|
circuitGroups[circuitNumber] = new Map()
|
||||||
|
}
|
||||||
|
|
||||||
|
const surfaceMap = circuitGroups[circuitNumber]
|
||||||
|
const key = surfaceId
|
||||||
|
|
||||||
|
if (!surfaceMap.has(key)) {
|
||||||
|
surfaceMap.set(key, [])
|
||||||
|
}
|
||||||
|
|
||||||
|
surfaceMap.get(key).push(item)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 결과: circuitNumber별 surface 그룹 수
|
||||||
|
const result = {}
|
||||||
|
for (const [circuit, surfaceMap] of Object.entries(circuitGroups)) {
|
||||||
|
result[circuit] = surfaceMap.size
|
||||||
|
}
|
||||||
|
|
||||||
|
return result
|
||||||
|
}
|
||||||
|
|
||||||
|
// 양단 케이블 구하는 공식
|
||||||
|
const getTotalConnectCableCnt = () => {
|
||||||
|
let cnt = 0
|
||||||
|
const surfaces = canvas.getObjects().filter((obj) => obj.name === POLYGON_TYPE.MODULE_SETUP_SURFACE)
|
||||||
|
const modules = canvas.getObjects().filter((obj) => obj.name === POLYGON_TYPE.MODULE)
|
||||||
|
surfaces.forEach((surface) => {
|
||||||
|
const modules = surface.modules
|
||||||
|
const groups = groupByType(modules)
|
||||||
|
groups.forEach((group) => {
|
||||||
|
const result = groupPoints(group, surface)
|
||||||
|
cnt += result.length - 1
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
const groupByCircuitAndSurfaceCnt = groupByCircuitAndSurface(modules)
|
||||||
|
|
||||||
|
Object.keys(groupByCircuitAndSurfaceCnt).forEach((key) => {
|
||||||
|
cnt += groupByCircuitAndSurfaceCnt[key] - 1
|
||||||
|
})
|
||||||
|
|
||||||
|
return cnt
|
||||||
|
}
|
||||||
|
|
||||||
return {
|
return {
|
||||||
apply,
|
apply,
|
||||||
getTrestleParams,
|
getTrestleParams,
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user