회로설정 수동회로 할당 수정
This commit is contained in:
parent
41e936b7c6
commit
ec835750f6
@ -12,7 +12,6 @@ import { useMasterController } from '@/hooks/common/useMasterController'
|
||||
import { v4 as uuidv4 } from 'uuid'
|
||||
import { globalLocaleStore } from '@/store/localeAtom'
|
||||
import { POLYGON_TYPE } from '@/common/common'
|
||||
import { circuitNumDisplaySelector } from '@/store/settingAtom'
|
||||
|
||||
export default function StepUp(props) {
|
||||
const {
|
||||
@ -33,7 +32,7 @@ export default function StepUp(props) {
|
||||
const [moduleTabs, setModuleTabs] = useState({})
|
||||
const [arrayLength, setArrayLength] = useState(3) //module-table-inner의 반복 개수
|
||||
const [pcsCheck, setPcsCheck] = useRecoilState(pcsCheckState)
|
||||
const { getPcsVoltageStepUpList, getPcsAutoRecommendList, getPcsVoltageChk } = useMasterController()
|
||||
const { getPcsVoltageStepUpList, getPcsAutoRecommendList, getPcsVoltageChk, getPcsConnOptionItemList } = useMasterController()
|
||||
const { managementState, setManagementState, managementStateLoaded } = useContext(GlobalDataContext)
|
||||
const canvas = useRecoilValue(canvasState)
|
||||
const selectedModules = useRecoilValue(selectedModuleState)
|
||||
@ -52,20 +51,19 @@ export default function StepUp(props) {
|
||||
// }
|
||||
|
||||
useEffect(() => {
|
||||
// PCS 승압설정 정보 조회
|
||||
console.log(allocationType)
|
||||
|
||||
if (allocationType === 'auto') {
|
||||
fetchStepUpData()
|
||||
// PCS 자동 승압설정 정보 조회
|
||||
fetchAutoStepUpData()
|
||||
} else {
|
||||
// 1-1 2-2
|
||||
canvas
|
||||
.getObjects()
|
||||
.filter((obj) => obj.name === POLYGON_TYPE.MODULE && obj.circuit)
|
||||
.map((module) => module.circuitNumber)
|
||||
// PCS 수동 승압설정 정보 조회
|
||||
fetchPassiStepUpData()
|
||||
}
|
||||
}, [])
|
||||
|
||||
// PCS 승압설정 정보 조회
|
||||
const fetchStepUpData = async () => {
|
||||
// PCS 자동 승압설정 정보 조회
|
||||
const fetchAutoStepUpData = async () => {
|
||||
try {
|
||||
const params = {
|
||||
...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 옵션 조회
|
||||
const formatOptionCodes = (optionList = []) => {
|
||||
return optionList?.map((opt) => ({
|
||||
@ -125,40 +206,6 @@ export default function StepUp(props) {
|
||||
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
|
||||
}
|
||||
|
||||
|
||||
@ -241,6 +241,18 @@ export function useMasterController() {
|
||||
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 {
|
||||
getRoofMaterialList,
|
||||
getModuleTypeItemList,
|
||||
@ -255,5 +267,6 @@ export function useMasterController() {
|
||||
getPcsVoltageStepUpList,
|
||||
updateObjectDate,
|
||||
getQuotationItem,
|
||||
getPcsConnOptionItemList,
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user