Cross Mix(DC3) 접속함을 PCS 담당 모듈 타입으로 필터링해 1건만 내려가도록 통합 로직 적용

This commit is contained in:
ysCha 2026-04-22 13:35:47 +09:00
parent 795c9789bd
commit 0eb888fbb9
2 changed files with 49 additions and 15 deletions

View File

@ -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(),
]
: [],

View File

@ -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(),
]
: [],