From 795c9789bd2b737aae71442bba043b85aa5fa319 Mon Sep 17 00:00:00 2001 From: ysCha Date: Tue, 21 Apr 2026 17:51:47 +0900 Subject: [PATCH] =?UTF-8?q?PassivityCircuitAllocation=EC=97=90=20=EC=A0=84?= =?UTF-8?q?=EB=8B=AC=ED=95=98=EB=8D=98=20=EB=AF=B8=EC=82=AC=EC=9A=A9=20ref?= =?UTF-8?q?=20prop=20=EC=A0=9C=EA=B1=B0=20passivityCircuitAllocationRef=20?= =?UTF-8?q?(useRef)=20=EC=84=A0=EC=96=B8=20=EC=A0=9C=EA=B1=B0=20=EC=9B=90?= =?UTF-8?q?=EC=9D=B8:=20function=20component=EC=97=90=20ref=20=EC=A0=84?= =?UTF-8?q?=EB=8B=AC=20=EC=8B=9C=20React=20warning=20=EB=B0=9C=EC=83=9D=20?= =?UTF-8?q?(forwardRef=20=EB=AF=B8=EC=82=AC=EC=9A=A9)=20PCS=20=EC=A0=91?= =?UTF-8?q?=EC=86=8D=ED=95=A8=20=EC=9D=91=EB=8B=B5=EC=97=90=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80=EB=90=9C=20moduleTpCd=20=ED=95=84=EB=93=9C=EB=A5=BC?= =?UTF-8?q?=20Cross=20Mix=20=EC=8B=9D=EB=B3=84=EC=9D=84=20=EC=9C=84?= =?UTF-8?q?=ED=95=B4=20=ED=94=84=EB=A1=A0=ED=8A=B8=20=EC=83=81=ED=83=9C=20?= =?UTF-8?q?=EB=B3=B4=EC=A1=B4=20=EB=B0=8F=20getQuotationItem=20=EC=A0=9C?= =?UTF-8?q?=EC=B6=9C=20=ED=8C=8C=EB=9D=BC=EB=AF=B8=ED=84=B0=EA=B9=8C?= =?UTF-8?q?=EC=A7=80=20=ED=9D=98=EB=A0=A4=EB=B3=B4=EB=82=B4=EA=B3=A0,=20de?= =?UTF-8?q?dupe=20=ED=82=A4=EB=A5=BC=20(itemId,=20moduleTpCd)=20=EC=A1=B0?= =?UTF-8?q?=ED=95=A9=EC=9C=BC=EB=A1=9C=20=EB=B3=80=EA=B2=BD.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../modal/circuitTrestle/CircuitTrestleSetting.jsx | 14 ++++++++++---- .../modal/circuitTrestle/step/StepUp.jsx | 6 ++++-- src/hooks/common/useMasterController.js | 10 ++++++++++ 3 files changed, 24 insertions(+), 6 deletions(-) diff --git a/src/components/floor-plan/modal/circuitTrestle/CircuitTrestleSetting.jsx b/src/components/floor-plan/modal/circuitTrestle/CircuitTrestleSetting.jsx index 011cfe54..24c5a44d 100644 --- a/src/components/floor-plan/modal/circuitTrestle/CircuitTrestleSetting.jsx +++ b/src/components/floor-plan/modal/circuitTrestle/CircuitTrestleSetting.jsx @@ -58,7 +58,6 @@ export default function CircuitTrestleSetting({ id }) { const { setModuleStatisticsData } = useCircuitTrestle() const { handleCanvasToPng } = useImgLoader() const moduleSelectionData = useRecoilValue(moduleSelectionDataState) - const passivityCircuitAllocationRef = useRef() const { setIsGlobalLoading } = useContext(QcastContext) const originCanvasViewPortTransform = useRef([]) @@ -844,9 +843,16 @@ export default function CircuitTrestleSetting({ id }) { pcsItemId: item.itemId, pscOptCd: getPcsOptCd(index), paralQty: serQty.paralQty, - // 접속함 중복 체크: 동일 itemId는 1개만, 다르면 각각 올림 + // 접속함 중복 체크: (itemId, moduleTpCd) 조합 기준으로 dedupe (Cross Mix 구분) connections: item.connList?.length - ? [...new Map(item.connList.map((conn) => [conn.itemId, { connItemId: conn.itemId, connMaxParalCnt: conn.connMaxParalCnt }])).values()] + ? [ + ...new Map( + item.connList.map((conn) => [ + `${conn.itemId}_${conn.moduleTpCd}`, + { connItemId: conn.itemId, connMaxParalCnt: conn.connMaxParalCnt, moduleTpCd: conn.moduleTpCd }, + ]), + ).values(), + ] : [], }) // return { @@ -1041,7 +1047,7 @@ export default function CircuitTrestleSetting({ id }) { {tabNum === 1 && allocationType === ALLOCATION_TYPE.AUTO && } {tabNum === 1 && allocationType === ALLOCATION_TYPE.PASSIVITY && ( - + )} {tabNum === 2 && } diff --git a/src/components/floor-plan/modal/circuitTrestle/step/StepUp.jsx b/src/components/floor-plan/modal/circuitTrestle/step/StepUp.jsx index da6ea213..60f44db3 100644 --- a/src/components/floor-plan/modal/circuitTrestle/step/StepUp.jsx +++ b/src/components/floor-plan/modal/circuitTrestle/step/StepUp.jsx @@ -345,6 +345,7 @@ export default function StepUp(props) { itemId: conn.itemId ?? '', itemNm: conn.itemNm ?? '', vstuParalCnt: conn.vstuParalCnt ?? 0, + moduleTpCd: conn.moduleTpCd, })) } @@ -585,15 +586,16 @@ export default function StepUp(props) { pcsItemId: serQty.itemId, pcsOptCd: seletedOption, paralQty: serQty.paralQty, - // 접속함 중복 체크: 동일 itemId는 1개만, 다르면 각각 올림 + // 접속함 중복 체크: (itemId, moduleTpCd) 조합 기준으로 dedupe connections: item.connList?.length ? [ ...new Map( item.connList.map((conn) => [ - conn.itemId, + `${conn.itemId}_${conn.moduleTpCd}`, { connItemId: conn.itemId, connMaxParalCnt: conn.connMaxParalCnt, + moduleTpCd: conn.moduleTpCd, }, ]), ).values(), diff --git a/src/hooks/common/useMasterController.js b/src/hooks/common/useMasterController.js index 36f5bd61..971b42ce 100644 --- a/src/hooks/common/useMasterController.js +++ b/src/hooks/common/useMasterController.js @@ -264,6 +264,8 @@ export function useMasterController() { */ const getPcsAutoRecommendList = async (params = null) => { return await post({ url: '/api/v1/master/getPcsAutoRecommendList', data: params }).then((res) => { + console.log('[moduleTpCd] getPcsAutoRecommendList req:', params) + console.log('[moduleTpCd] getPcsAutoRecommendList res pcsItemList:', res?.data?.pcsItemList?.map((p) => ({ itemId: p.itemId, pcsTpCd: p.pcsTpCd, connList: p.connList?.map((c) => ({ itemId: c.itemId, moduleTpCd: c.moduleTpCd })) }))) return res }) } @@ -286,6 +288,8 @@ export function useMasterController() { */ const getPcsVoltageChk = async (params = null) => { return await post({ url: '/api/v1/master/getPcsVoltageChk', data: params }).then((res) => { + console.log('[moduleTpCd] getPcsVoltageChk req:', params) + console.log('[moduleTpCd] getPcsVoltageChk res pcsItemList:', res?.data?.pcsItemList?.map((p) => ({ itemId: p.itemId, pcsTpCd: p.pcsTpCd, connList: p.connList?.map((c) => ({ itemId: c.itemId, moduleTpCd: c.moduleTpCd })) }))) return res }) } @@ -322,11 +326,15 @@ export function useMasterController() { } return await post({ url: '/api/v1/master/getPcsVoltageStepUpList', data: params }).then((res) => { + console.log('[moduleTpCd] getPcsVoltageStepUpList req:', params) + console.log('[moduleTpCd] getPcsVoltageStepUpList res pcsItemList:', res?.data?.pcsItemList?.map((p) => ({ itemId: p.itemId, pcsTpCd: p.pcsTpCd, connList: p.connList?.map((c) => ({ itemId: c.itemId, moduleTpCd: c.moduleTpCd })) }))) return res }) } const getQuotationItem = async (params) => { + console.log('[moduleTpCd] getQuotationItem req pcses.connections:', params?.pcses?.map((p) => ({ pcsItemId: p.pcsItemId, connections: p.connections }))) + console.log('[moduleTpCd] getQuotationItem full req:', params) return await post({ url: '/api/v1/master/getQuotationItem', data: params }) .then((res) => { return res @@ -355,6 +363,8 @@ export function useMasterController() { */ const getPcsConnOptionItemList = async (params = null) => { return await post({ url: '/api/v1/master/getPcsConnOptionItemList', data: params }).then((res) => { + console.log('[moduleTpCd] getPcsConnOptionItemList req:', params) + console.log('[moduleTpCd] getPcsConnOptionItemList res pcsItemList:', res?.data?.pcsItemList?.map((p) => ({ itemId: p.itemId, pcsTpCd: p.pcsTpCd, connList: p.connList?.map((c) => ({ itemId: c.itemId, moduleTpCd: c.moduleTpCd })) }))) return res }) } -- 2.47.2