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