dedupe 키를 (itemId, moduleTpCd) 조합으로 변경 #788

Merged
ysCha merged 1 commits from dev into dev-deploy 2026-04-21 17:54:33 +09:00
3 changed files with 24 additions and 6 deletions

View File

@ -58,7 +58,6 @@ export default function CircuitTrestleSetting({ id }) {
const { setModuleStatisticsData } = useCircuitTrestle() const { setModuleStatisticsData } = useCircuitTrestle()
const { handleCanvasToPng } = useImgLoader() const { handleCanvasToPng } = useImgLoader()
const moduleSelectionData = useRecoilValue(moduleSelectionDataState) const moduleSelectionData = useRecoilValue(moduleSelectionDataState)
const passivityCircuitAllocationRef = useRef()
const { setIsGlobalLoading } = useContext(QcastContext) const { setIsGlobalLoading } = useContext(QcastContext)
const originCanvasViewPortTransform = useRef([]) const originCanvasViewPortTransform = useRef([])
@ -844,9 +843,16 @@ export default function CircuitTrestleSetting({ id }) {
pcsItemId: item.itemId, pcsItemId: item.itemId,
pscOptCd: getPcsOptCd(index), pscOptCd: getPcsOptCd(index),
paralQty: serQty.paralQty, paralQty: serQty.paralQty,
// : itemId 1, // : (itemId, moduleTpCd) dedupe (Cross Mix )
connections: item.connList?.length 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 { // return {
@ -1041,7 +1047,7 @@ export default function CircuitTrestleSetting({ id }) {
</div> </div>
{tabNum === 1 && allocationType === ALLOCATION_TYPE.AUTO && <PowerConditionalSelect {...powerConditionalSelectProps} />} {tabNum === 1 && allocationType === ALLOCATION_TYPE.AUTO && <PowerConditionalSelect {...powerConditionalSelectProps} />}
{tabNum === 1 && allocationType === ALLOCATION_TYPE.PASSIVITY && ( {tabNum === 1 && allocationType === ALLOCATION_TYPE.PASSIVITY && (
<PassivityCircuitAllocation {...passivityProps} ref={passivityCircuitAllocationRef} isFold={isFold} /> <PassivityCircuitAllocation {...passivityProps} isFold={isFold} />
)} )}
{tabNum === 2 && <StepUp {...stepUpProps} onInitialize={handleStepUpInitialize} />} {tabNum === 2 && <StepUp {...stepUpProps} onInitialize={handleStepUpInitialize} />}
</div> </div>

View File

@ -345,6 +345,7 @@ export default function StepUp(props) {
itemId: conn.itemId ?? '', itemId: conn.itemId ?? '',
itemNm: conn.itemNm ?? '', itemNm: conn.itemNm ?? '',
vstuParalCnt: conn.vstuParalCnt ?? 0, vstuParalCnt: conn.vstuParalCnt ?? 0,
moduleTpCd: conn.moduleTpCd,
})) }))
} }
@ -585,15 +586,16 @@ export default function StepUp(props) {
pcsItemId: serQty.itemId, pcsItemId: serQty.itemId,
pcsOptCd: seletedOption, pcsOptCd: seletedOption,
paralQty: serQty.paralQty, paralQty: serQty.paralQty,
// : itemId 1, // : (itemId, moduleTpCd) dedupe
connections: item.connList?.length connections: item.connList?.length
? [ ? [
...new Map( ...new Map(
item.connList.map((conn) => [ item.connList.map((conn) => [
conn.itemId, `${conn.itemId}_${conn.moduleTpCd}`,
{ {
connItemId: conn.itemId, connItemId: conn.itemId,
connMaxParalCnt: conn.connMaxParalCnt, connMaxParalCnt: conn.connMaxParalCnt,
moduleTpCd: conn.moduleTpCd,
}, },
]), ]),
).values(), ).values(),

View File

@ -264,6 +264,8 @@ export function useMasterController() {
*/ */
const getPcsAutoRecommendList = async (params = null) => { const getPcsAutoRecommendList = async (params = null) => {
return await post({ url: '/api/v1/master/getPcsAutoRecommendList', data: params }).then((res) => { 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 return res
}) })
} }
@ -286,6 +288,8 @@ export function useMasterController() {
*/ */
const getPcsVoltageChk = async (params = null) => { const getPcsVoltageChk = async (params = null) => {
return await post({ url: '/api/v1/master/getPcsVoltageChk', data: params }).then((res) => { 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 return res
}) })
} }
@ -322,11 +326,15 @@ export function useMasterController() {
} }
return await post({ url: '/api/v1/master/getPcsVoltageStepUpList', data: params }).then((res) => { 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 return res
}) })
} }
const getQuotationItem = async (params) => { 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 }) return await post({ url: '/api/v1/master/getQuotationItem', data: params })
.then((res) => { .then((res) => {
return res return res
@ -355,6 +363,8 @@ export function useMasterController() {
*/ */
const getPcsConnOptionItemList = async (params = null) => { const getPcsConnOptionItemList = async (params = null) => {
return await post({ url: '/api/v1/master/getPcsConnOptionItemList', data: params }).then((res) => { 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 return res
}) })
} }