회로설정 수동회로 할당 수정
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 { 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
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -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,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user