Cross Mix(DC3) 접속함을 PCS 담당 모듈 타입으로 필터링해 1건만 내려가도록 통합 로직 적용 #789
@ -831,9 +831,23 @@ export default function CircuitTrestleSetting({ id }) {
|
||||
|
||||
// 승압설정 목록 조회
|
||||
const getStepUpListData = () => {
|
||||
// PCS 인스턴스별 실제 담당 모듈 타입 집합 수집 (Cross Mix DC3 접속함 분리용)
|
||||
const pcsModuleTpCds = {}
|
||||
canvas
|
||||
.getObjects()
|
||||
.filter((obj) => obj.name === POLYGON_TYPE.MODULE && obj.circuit && obj.pcsItemId)
|
||||
.forEach((module) => {
|
||||
const pcsInstanceId = module.circuit?.circuitInfo?.id
|
||||
const tpCd = module.moduleInfo?.moduleTpCd
|
||||
if (!pcsInstanceId || !tpCd) return
|
||||
if (!pcsModuleTpCds[pcsInstanceId]) pcsModuleTpCds[pcsInstanceId] = new Set()
|
||||
pcsModuleTpCds[pcsInstanceId].add(tpCd)
|
||||
})
|
||||
|
||||
const pcs = []
|
||||
console.log(stepUpListData)
|
||||
stepUpListData[0].pcsItemList.map((item, index) => {
|
||||
const targetTpCds = pcsModuleTpCds[selectedModels[index]?.id]
|
||||
return item.serQtyList
|
||||
.filter((serQty) => serQty.selected && serQty.paralQty > 0)
|
||||
.forEach((serQty) => {
|
||||
@ -843,14 +857,17 @@ export default function CircuitTrestleSetting({ id }) {
|
||||
pcsItemId: item.itemId,
|
||||
pscOptCd: getPcsOptCd(index),
|
||||
paralQty: serQty.paralQty,
|
||||
// 접속함 중복 체크: (itemId, moduleTpCd) 조합 기준으로 dedupe (Cross Mix 구분)
|
||||
// 접속함: PCS가 실제 담당하는 모듈 타입으로 필터 후 itemId 기준 dedupe
|
||||
// (Cross Mix 시 다른 모듈 계열의 conn 제외 / 단일·동계열 Mix는 기존과 동일 결과)
|
||||
connections: item.connList?.length
|
||||
? [
|
||||
...new Map(
|
||||
item.connList.map((conn) => [
|
||||
`${conn.itemId}_${conn.moduleTpCd}`,
|
||||
{ connItemId: conn.itemId, connMaxParalCnt: conn.connMaxParalCnt, moduleTpCd: conn.moduleTpCd },
|
||||
]),
|
||||
item.connList
|
||||
.filter((conn) => !targetTpCds || !conn.moduleTpCd || targetTpCds.has(conn.moduleTpCd))
|
||||
.map((conn) => [
|
||||
conn.itemId,
|
||||
{ connItemId: conn.itemId, connMaxParalCnt: conn.connMaxParalCnt, moduleTpCd: conn.moduleTpCd },
|
||||
]),
|
||||
).values(),
|
||||
]
|
||||
: [],
|
||||
|
||||
@ -577,7 +577,21 @@ export default function StepUp(props) {
|
||||
* 현재 선택된 값들을 가져오는 함수 추가
|
||||
*/
|
||||
const getCurrentSelections = () => {
|
||||
const selectedValues = stepUpListData[0].pcsItemList.forEach((item) => {
|
||||
// PCS 인스턴스별 실제 담당 모듈 타입 집합 수집 (Cross Mix DC3 접속함 분리용)
|
||||
const pcsModuleTpCds = {}
|
||||
canvas
|
||||
.getObjects()
|
||||
.filter((obj) => obj.name === POLYGON_TYPE.MODULE && obj.circuit && obj.pcsItemId)
|
||||
.forEach((module) => {
|
||||
const pcsInstanceId = module.circuit?.circuitInfo?.id
|
||||
const tpCd = module.moduleInfo?.moduleTpCd
|
||||
if (!pcsInstanceId || !tpCd) return
|
||||
if (!pcsModuleTpCds[pcsInstanceId]) pcsModuleTpCds[pcsInstanceId] = new Set()
|
||||
pcsModuleTpCds[pcsInstanceId].add(tpCd)
|
||||
})
|
||||
|
||||
const selectedValues = stepUpListData[0].pcsItemList.forEach((item, index) => {
|
||||
const targetTpCds = pcsModuleTpCds[selectedModels[index]?.id]
|
||||
item.serQtyList.filter((serQty) => serQty.selected)
|
||||
return item.serQtyList.map((serQty) => {
|
||||
return {
|
||||
@ -586,18 +600,21 @@ export default function StepUp(props) {
|
||||
pcsItemId: serQty.itemId,
|
||||
pcsOptCd: seletedOption,
|
||||
paralQty: serQty.paralQty,
|
||||
// 접속함 중복 체크: (itemId, moduleTpCd) 조합 기준으로 dedupe
|
||||
// 접속함: PCS가 실제 담당하는 모듈 타입으로 필터 후 itemId 기준 dedupe
|
||||
// (Cross Mix 시 다른 모듈 계열의 conn 제외 / 단일·동계열 Mix는 기존과 동일 결과)
|
||||
connections: item.connList?.length
|
||||
? [
|
||||
...new Map(
|
||||
item.connList.map((conn) => [
|
||||
`${conn.itemId}_${conn.moduleTpCd}`,
|
||||
{
|
||||
connItemId: conn.itemId,
|
||||
connMaxParalCnt: conn.connMaxParalCnt,
|
||||
moduleTpCd: conn.moduleTpCd,
|
||||
},
|
||||
]),
|
||||
item.connList
|
||||
.filter((conn) => !targetTpCds || !conn.moduleTpCd || targetTpCds.has(conn.moduleTpCd))
|
||||
.map((conn) => [
|
||||
conn.itemId,
|
||||
{
|
||||
connItemId: conn.itemId,
|
||||
connMaxParalCnt: conn.connMaxParalCnt,
|
||||
moduleTpCd: conn.moduleTpCd,
|
||||
},
|
||||
]),
|
||||
).values(),
|
||||
]
|
||||
: [],
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user