회로설정 수동회로 할당 수정

This commit is contained in:
changkyu choi 2025-02-05 20:51:30 +09:00
parent 41e936b7c6
commit ec835750f6
2 changed files with 105 additions and 45 deletions

View File

@ -12,7 +12,6 @@ import { useMasterController } from '@/hooks/common/useMasterController'
import { v4 as uuidv4 } from 'uuid' import { v4 as uuidv4 } from 'uuid'
import { globalLocaleStore } from '@/store/localeAtom' import { globalLocaleStore } from '@/store/localeAtom'
import { POLYGON_TYPE } from '@/common/common' import { POLYGON_TYPE } from '@/common/common'
import { circuitNumDisplaySelector } from '@/store/settingAtom'
export default function StepUp(props) { export default function StepUp(props) {
const { const {
@ -33,7 +32,7 @@ export default function StepUp(props) {
const [moduleTabs, setModuleTabs] = useState({}) const [moduleTabs, setModuleTabs] = useState({})
const [arrayLength, setArrayLength] = useState(3) //module-table-inner const [arrayLength, setArrayLength] = useState(3) //module-table-inner
const [pcsCheck, setPcsCheck] = useRecoilState(pcsCheckState) const [pcsCheck, setPcsCheck] = useRecoilState(pcsCheckState)
const { getPcsVoltageStepUpList, getPcsAutoRecommendList, getPcsVoltageChk } = useMasterController() const { getPcsVoltageStepUpList, getPcsAutoRecommendList, getPcsVoltageChk, getPcsConnOptionItemList } = useMasterController()
const { managementState, setManagementState, managementStateLoaded } = useContext(GlobalDataContext) const { managementState, setManagementState, managementStateLoaded } = useContext(GlobalDataContext)
const canvas = useRecoilValue(canvasState) const canvas = useRecoilValue(canvasState)
const selectedModules = useRecoilValue(selectedModuleState) const selectedModules = useRecoilValue(selectedModuleState)
@ -52,20 +51,19 @@ export default function StepUp(props) {
// } // }
useEffect(() => { useEffect(() => {
// PCS console.log(allocationType)
if (allocationType === 'auto') { if (allocationType === 'auto') {
fetchStepUpData() // PCS
fetchAutoStepUpData()
} else { } else {
// 1-1 2-2 // PCS
canvas fetchPassiStepUpData()
.getObjects()
.filter((obj) => obj.name === POLYGON_TYPE.MODULE && obj.circuit)
.map((module) => module.circuitNumber)
} }
}, []) }, [])
// PCS // PCS
const fetchStepUpData = async () => { const fetchAutoStepUpData = async () => {
try { try {
const params = { const params = {
...props.getOptYn(), // Y/N ...props.getOptYn(), // Y/N
@ -107,6 +105,89 @@ export default function StepUp(props) {
} }
} }
// PCS
const fetchPassiStepUpData = async () => {
try {
// 1-1 2-2
// canvas
// .getObjects()
// .filter((obj) => obj.name === POLYGON_TYPE.MODULE && obj.circuit)
// .map((module) => module.circuitNumber)
//
const modules = canvas.getObjects().filter((obj) => obj.name === POLYGON_TYPE.MODULE)
// PCS
const pcsSummary = {}
// PCS
modules.forEach((module) => {
if (!module.circuit || !module.pcsItemId) return
if (!pcsSummary[module.pcsItemId]) {
pcsSummary[module.pcsItemId] = {
circuits: {},
totalModules: 0,
}
}
const circuitNumber = module.circuitNumber
if (!pcsSummary[module.pcsItemId].circuits[circuitNumber]) {
pcsSummary[module.pcsItemId].circuits[circuitNumber] = 0
}
pcsSummary[module.pcsItemId].circuits[circuitNumber]++
pcsSummary[module.pcsItemId].totalModules++
})
const params = {
useModuleItemList: props.getUseModuleItemList(),
pcsItemList: getSelectedPcsItemList(),
}
// PCS
getPcsConnOptionItemList(params).then((res) => {
if (res?.result.code === 200 && res?.data) {
// PCS serQtyList
const pcsItemListWithSerQty = res.data.pcsItemList.map((pcsItem) => {
const pcsData = pcsSummary[pcsItem.itemId] || { circuits: {}, totalModules: 0 }
const circuitCounts = Object.values(pcsData.circuits)
return {
...pcsItem,
serQtyList: [
{
//
serQty: circuitCounts.length > 0 ? Math.max(...circuitCounts) : 0,
//
paralQty: Object.keys(pcsData.circuits).length || 0,
rmdYn: 'Y',
usePossYn: 'Y',
roofSurfaceList: props.getRoofSurfaceList(),
},
],
}
})
// Update res.data with modified pcsItemList
res.data.pcsItemList = pcsItemListWithSerQty
setSelectedModels(pcsItemListWithSerQty)
const dataArray = Array.isArray(res.data) ? res.data : [res.data]
const stepUpListData = formatStepUpListData(dataArray)
// PCS SET
setStepUpListData(stepUpListData)
// PCS
const formattedOptCodes = formatOptionCodes(res.data.optionList)
setOptCodes(formattedOptCodes)
setSeletedOption(formattedOptCodes[0])
}
})
} catch (error) {
console.error('Error fetching step up data:', error)
}
}
// PCS // PCS
const formatOptionCodes = (optionList = []) => { const formatOptionCodes = (optionList = []) => {
return optionList?.map((opt) => ({ return optionList?.map((opt) => ({
@ -125,40 +206,6 @@ export default function StepUp(props) {
selectedPcsItem: formatPcsItemList(stepUps.pcsItemList), selectedPcsItem: formatPcsItemList(stepUps.pcsItemList),
})) }))
// selectedValues
const initialSelectedValues = {}
formattedData.forEach((stepUp) => {
stepUp.pcsItemList.forEach((pcsItem, pcsIdx) => {
const pcsKey = `${pcsItem.goodsNo}_${pcsIdx}`
// (rmdYn === 'Y')
const recommendedRow = pcsItem.serQtyList.find((item) => item.rmdYn === 'Y')
if (recommendedRow) {
const selectionData = {
stepUpId: pcsItem.goodsNo,
pcsInfo: {
itemId: pcsItem.itemId,
goodsNo: pcsItem.goodsNo,
pcsMkrCd: pcsItem.pcsMkrCd,
pcsSerCd: pcsItem.pcsSerCd,
},
allocation: {
serQty: recommendedRow.serQty,
paralQty: recommendedRow.paralQty,
},
}
initialSelectedValues[pcsItem.goodsNo] = {
...initialSelectedValues[pcsItem.goodsNo],
[pcsKey]: selectionData,
}
}
})
})
// selectedValues
setSelectedValues(initialSelectedValues)
return formattedData return formattedData
} }

View File

@ -241,6 +241,18 @@ export function useMasterController() {
return await put({ url: '/api/object/update-object-date', data: params }) return await put({ url: '/api/object/update-object-date', data: params })
} }
/**
* PCS 접속함 옵션 목록 조회
* @param {사용된 모듈 아이템 목록} useModuleItemList
* @param {PCS 제품 목록} pcsItemList
* @returns
*/
const getPcsConnOptionItemList = async (params = null) => {
return await post({ url: '/api/v1/master/getPcsConnOptionItemList', data: params }).then((res) => {
return res
})
}
return { return {
getRoofMaterialList, getRoofMaterialList,
getModuleTypeItemList, getModuleTypeItemList,
@ -255,5 +267,6 @@ export function useMasterController() {
getPcsVoltageStepUpList, getPcsVoltageStepUpList,
updateObjectDate, updateObjectDate,
getQuotationItem, getQuotationItem,
getPcsConnOptionItemList,
} }
} }