양단 케이블 파라미터 추가
This commit is contained in:
parent
c0cbcd18a2
commit
d6d626f2d7
@ -708,7 +708,9 @@ export const useTrestle = () => {
|
||||
})
|
||||
|
||||
// trestles 배열에서 null인 경우 제거
|
||||
const params = { trestles, pcses, modules }
|
||||
|
||||
const dblCblTotCnt = getTotalConnectCableCnt()
|
||||
const params = { trestles, pcses, modules, dblCblTotCnt }
|
||||
|
||||
//견적서 itemList 조회
|
||||
const { data, data2, result } = await getQuotationItem(params)
|
||||
@ -2270,9 +2272,9 @@ export const useTrestle = () => {
|
||||
}
|
||||
|
||||
return (
|
||||
(Math.abs(m1X - m2X) <= maxX && Math.abs(m1Y - m2Y) <= maxY) ||
|
||||
(Math.abs(Math.abs(m1X - m2X) - maxX / 2) <= halfMaxX && Math.abs(Math.abs(m1Y - m2Y) - maxY) <= halfMaxY) ||
|
||||
(Math.abs(Math.abs(m1X - m2X) - maxX) <= halfMaxX && Math.abs(Math.abs(m1Y - m2Y) - maxY / 2) <= halfMaxY)
|
||||
(Math.abs(m1X - m2X) < maxX - moduleIntvlHor / 10 && Math.abs(m1Y - m2Y) < maxY - moduleIntvlVer / 10) ||
|
||||
(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 + 1 && Math.abs(Math.abs(m1Y - m2Y) - maxY / 2) < halfMaxY + 1)
|
||||
)
|
||||
} else if (direction === 'east' || direction === 'west') {
|
||||
maxX = height + moduleIntvlHor / 10
|
||||
@ -2292,9 +2294,9 @@ export const useTrestle = () => {
|
||||
}
|
||||
|
||||
return (
|
||||
(Math.abs(m1X - m2X) <= maxY && Math.abs(m1Y - m2Y) <= maxX) ||
|
||||
(Math.abs(Math.abs(m1X - m2X) - maxY / 2) <= halfMaxY && Math.abs(Math.abs(m1Y - m2Y) - maxX) <= halfMaxX) ||
|
||||
(Math.abs(Math.abs(m1X - m2X) - maxY) <= halfMaxY && Math.abs(Math.abs(m1Y - m2Y) - maxX / 2) <= halfMaxX)
|
||||
(Math.abs(m1X - m2X) <= maxY - moduleIntvlVer / 10 && Math.abs(m1Y - m2Y) <= maxX - moduleIntvlHor / 10) ||
|
||||
(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 + 1 && Math.abs(Math.abs(m1Y - m2Y) - maxX / 2) < halfMaxX + 1)
|
||||
)
|
||||
}
|
||||
})
|
||||
@ -3035,6 +3037,73 @@ export const useTrestle = () => {
|
||||
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 {
|
||||
apply,
|
||||
getTrestleParams,
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user