배치면초기설정 조회 및 저장 수정

This commit is contained in:
changkyu choi 2025-02-12 17:44:13 +09:00
parent c933db43d2
commit 95a1137cd9
3 changed files with 170 additions and 167 deletions

View File

@ -79,72 +79,71 @@ export default function StepUp(props) {
// //
getPcsVoltageStepUpList(params).then((res) => { getPcsVoltageStepUpList(params).then((res) => {
if (res.result.resultCode === 'S') { if (res?.result.resultCode === 'S' && res?.data) {
if (res?.result.code === 200 && res?.data) { const dataArray = Array.isArray(res.data) ? res.data : [res.data]
const dataArray = Array.isArray(res.data) ? res.data : [res.data] const stepUpListData = formatStepUpListData(dataArray)
const stepUpListData = formatStepUpListData(dataArray)
// PCS SET // PCS SET
setStepUpListData(stepUpListData) setStepUpListData(stepUpListData)
// PCS // PCS
const formattedOptCodes = formatOptionCodes(res.data.optionList) const formattedOptCodes = formatOptionCodes(res.data.optionList)
setOptCodes(formattedOptCodes) setOptCodes(formattedOptCodes)
setSeletedOption(formattedOptCodes[0]) setSeletedOption(formattedOptCodes[0])
// //
//stepUpListData[0].pcsItemList.forEach((pcsItem) => { //stepUpListData[0].pcsItemList.forEach((pcsItem) => {
stepUpListData[0].pcsItemList.forEach((pcsItem) => { stepUpListData[0].pcsItemList.forEach((pcsItem) => {
const selectedSerQty = pcsItem.serQtyList.find((serQty) => serQty.selected) const selectedSerQty = pcsItem.serQtyList.find((serQty) => serQty.selected)
if (selectedSerQty) { if (selectedSerQty) {
selectedSerQty.roofSurfaceList.forEach((roofSurface) => { selectedSerQty.roofSurfaceList.forEach((roofSurface) => {
const targetSurface = canvas.getObjects().filter((obj) => obj.id === roofSurface.roofSurfaceId)[0] const targetSurface = canvas.getObjects().filter((obj) => obj.id === roofSurface.roofSurfaceId)[0]
const moduleIds = targetSurface.modules.map((module) => module.id) const moduleIds = targetSurface.modules.map((module) => module.id)
// //
canvas canvas
.getObjects() .getObjects()
.filter((obj) => moduleIds.includes(obj.parentId)) .filter((obj) => moduleIds.includes(obj.parentId))
.forEach((text) => canvas.remove(text)) .forEach((text) => canvas.remove(text))
// //
roofSurface.moduleList.forEach((module) => { roofSurface.moduleList.forEach((module) => {
const targetModule = canvas.getObjects().filter((obj) => obj.id === module.uniqueId)[0] const targetModule = canvas.getObjects().filter((obj) => obj.id === module.uniqueId)[0]
const moduleCircuitText = new fabric.Text(module.circuit, { const moduleCircuitText = new fabric.Text(module.circuit, {
left: targetModule.left + targetModule.width / 2, left: targetModule.left + targetModule.width / 2,
top: targetModule.top + targetModule.height / 2, top: targetModule.top + targetModule.height / 2,
fontFamily: circuitNumberText.fontFamily.value, fontFamily: circuitNumberText.fontFamily.value,
fontWeight: circuitNumberText.fontWeight.value.toLowerCase().includes('bold') ? 'bold' : 'normal', fontWeight: circuitNumberText.fontWeight.value.toLowerCase().includes('bold') ? 'bold' : 'normal',
fontStyle: circuitNumberText.fontWeight.value.toLowerCase().includes('italic') ? 'italic' : 'normal', fontStyle: circuitNumberText.fontWeight.value.toLowerCase().includes('italic') ? 'italic' : 'normal',
fontSize: circuitNumberText.fontSize.value, fontSize: circuitNumberText.fontSize.value,
fill: circuitNumberText.fontColor.value, fill: circuitNumberText.fontColor.value,
width: targetModule.width, width: targetModule.width,
height: targetModule.height, height: targetModule.height,
textAlign: 'center', textAlign: 'center',
originX: 'center', originX: 'center',
originY: 'center', originY: 'center',
name: 'circuitNumber', name: 'circuitNumber',
parentId: targetModule.id, parentId: targetModule.id,
circuitInfo: module.pcsItemId, circuitInfo: module.pcsItemId,
selectable: false, selectable: false,
visible: isDisplayCircuitNumber, visible: isDisplayCircuitNumber,
})
targetModule.circuit = moduleCircuitText
targetModule.pcsItemId = module.pcsItemId
targetModule.circuitNumber = module.circuit
canvas.add(moduleCircuitText)
}) })
targetModule.circuit = moduleCircuitText
targetModule.pcsItemId = module.pcsItemId
targetModule.circuitNumber = module.circuit
canvas.add(moduleCircuitText)
}) })
} })
}) }
})
canvas.renderAll() canvas.renderAll()
} else { } else {
swalFire({ swalFire({ text: getMessage('common.message.send.error') })
title: res.result.resultMsg, // swalFire({
type: 'alert', // title: res.result.resultMsg,
}) // type: 'alert',
} // })
} }
}) })
} catch (error) { } catch (error) {
@ -381,7 +380,7 @@ export default function StepUp(props) {
//const res = await getPcsVoltageStepUpList(params) //const res = await getPcsVoltageStepUpList(params)
//getPcsManualConfChk(params).then((res) => { //getPcsManualConfChk(params).then((res) => {
getPcsVoltageStepUpList(params).then((res) => { getPcsVoltageStepUpList(params).then((res) => {
if (res?.result.code === 200 && res?.data) { if (res?.result.resultCode === 'S' && res?.data) {
const dataArray = Array.isArray(res.data) ? res.data : [res.data] const dataArray = Array.isArray(res.data) ? res.data : [res.data]
const stepUpListData = formatStepUpListData(dataArray) const stepUpListData = formatStepUpListData(dataArray)
@ -392,6 +391,12 @@ export default function StepUp(props) {
const formattedOptCodes = formatOptionCodes(res.data.optionList) const formattedOptCodes = formatOptionCodes(res.data.optionList)
setOptCodes(formattedOptCodes) setOptCodes(formattedOptCodes)
setSeletedOption(formattedOptCodes[0]) setSeletedOption(formattedOptCodes[0])
} else {
swalFire({ text: getMessage('common.message.send.error') })
// swalFire({
// title: res.result.resultMsg,
// type: 'alert',
// })
} }
}) })
} }

View File

@ -55,31 +55,53 @@ export default function PlacementShapeSetting({ id, pos = { x: 50, y: 180 }, set
{ id: 'ra05', name: 'roofAngleSet', value: 'flat', message: 'modal.placement.initial.setting.roof.angle' }, { id: 'ra05', name: 'roofAngleSet', value: 'flat', message: 'modal.placement.initial.setting.roof.angle' },
] ]
// const defaultRoofSettings = {
// useEffect(() => { roofSizeSet: '1', //
// if (!basicSetting || !currentRoof || Object.keys(currentRoof).length === 0 || Object.keys(basicSetting).length === 0) return roofAngleSet: 'slope', //
// const raftCodeList = findCommonCode('203800') angle: 21.8,
// setRaftCodes(raftCodeList) hajebichi: '',
// console.log('🚀 ~ useEffect ~ >>>>>>>>>>>>> raftCodeList 11 :', raftCodeList) id: 'ROOF_ID_WA_53A',
index: 0,
// if (addedRoofs[0].roofAngleSet && addedRoofs[0].roofAngleSet?.length > 0) { layout: ROOF_MATERIAL_LAYOUT.PARALLEL,
// setCurrentRoof({ ...currentRoof, roofSizeSet: String(addedRoofs[0].roofSizeSet), roofAngleSet: addedRoofs[0].roofAngleSet }) lenAuth: 'R',
// } else if (basicSetting.roofAngleSet && basicSetting.roofAngleSet?.length > 0) { lenBase: '235.000',
// setCurrentRoof({ ...currentRoof, roofSizeSet: String(basicSetting.roofSizeSet), roofAngleSet: basicSetting.roofAngleSet }) length: '235',
// } name: '일본기와 A',
// }, []) nameJp: '和瓦A',
pitch: 4,
raft: '',
raftAuth: 'C',
raftBaseCd: 'HEI_455',
roofAngleSet: 'slope',
roofCd: '',
roofMatlCd: 'ROOF_ID_WA_53A',
roofMatlNm: '일본기와 A',
roofMatlNmJp: '和瓦A',
roofPchAuth: null,
roofPchBase: null,
roofSizeSet: '1',
selected: true,
widAuth: 'R',
widBase: '265.000',
width: '265',
}
useEffect(() => { useEffect(() => {
if (addedRoofs.length > 0) { if (addedRoofs.length > 0) {
const raftCodeList = findCommonCode('203800') const raftCodeList = findCommonCode('203800')
setRaftCodes(raftCodeList) setRaftCodes(raftCodeList)
setCurrentRoof({ ...addedRoofs[0] }) //
if (addedRoofs.length > 0) {
setCurrentRoof({ ...addedRoofs[0] })
} else {
setCurrentRoof(defaultRoofSettings)
}
} }
}, [addedRoofs]) }, [addedRoofs])
useEffect(() => { useEffect(() => {
console.log('🚀 ~ fetchBasicSettings ~ currentRoof :', currentRoof) //console.log('🚀 ~ fetchBasicSettings ~ currentRoof :', currentRoof)
if (!currentRoof) return if (!currentRoof) return
setBasicSettings({ setBasicSettings({
...basicSetting, ...basicSetting,
@ -152,30 +174,14 @@ export default function PlacementShapeSetting({ id, pos = { x: 50, y: 180 }, set
}, },
}) })
setBasicSettings({ //
basicSettingSave({
...basicSetting, ...basicSetting,
selectedRoofMaterial: { selectedRoofMaterial: {
// //
...roofInfo, roofInfo,
}, },
//roofs: addedRoofs,
// roofsData: {
// roofApply: true,
// roofSeq: 0,
// roofMatlCd: currentRoof.roofMatlCd,
// roofWidth: currentRoof.width,
// roofHeight: currentRoof.length,
// roofHajebichi: currentRoof.hajebichi,
// roofGap: currentRoof.raft,
// roofLayout: currentRoof.layout,
// roofSizeSet: currentRoof.roofSizeSet,
// roofAngleSet: currentRoof.roofAngleSet,
// roofPitch: currentRoof.pitch,
// roofAngle: currentRoof.angle,
// },
}) })
basicSettingSave()
} }
return ( return (

View File

@ -134,11 +134,11 @@ export function useCanvasSetting() {
{ id: 4, name: '1/10', value: 1 / 10 }, { id: 4, name: '1/10', value: 1 / 10 },
] ]
const selectedRoofMaterial = useRecoilValue(selectedRoofMaterialSelector) const selectedRoofMaterial = useRecoilValue(selectedRoofMaterialSelector) // 선택된 지붕재 정보
const { floorPlanState } = useContext(FloorPlanContext) // 플랜 상태
const { floorPlanState } = useContext(FloorPlanContext) const { closeAll } = usePopup() // 팝업 닫기
const previousObjectNoRef = useRef(null) // 최초 데이터 설정 확인
const { closeAll } = usePopup() const previousRoofMaterialsRef = useRef(null) // 최초 데이터 설정 확인
useEffect(() => { useEffect(() => {
const tempFetchRoofMaterials = !fetchRoofMaterials const tempFetchRoofMaterials = !fetchRoofMaterials
@ -150,42 +150,6 @@ export function useCanvasSetting() {
} }
}, []) }, [])
//지붕재 초기세팅
const addRoofMaterials = async () => {
if (roofMaterials.length !== 0) {
return
}
const { data } = await getRoofMaterialList()
const roofLists = data.map((item, idx) => ({
...item,
id: item.roofMatlCd,
name: item.roofMatlNm,
selected: idx === 0,
index: idx,
nameJp: item.roofMatlNmJp,
length: item.lenBase && parseInt(item.lenBase),
width: item.widBase && parseInt(item.widBase),
raft: item.raftBase && parseInt(item.raftBase),
layout: ['ROOF_ID_SLATE', 'ROOF_ID_SINGLE'].includes(item.roofMatlCd) ? ROOF_MATERIAL_LAYOUT.STAIRS : ROOF_MATERIAL_LAYOUT.PARALLEL,
hajebichi: item.roofPchBase && parseInt(item.roofPchBase),
pitch: item.pitch ? parseInt(item.pitch) : 4,
angle: item.angle ? parseInt(item.angle) : 21.8,
}))
setRoofMaterials(roofLists)
const selectedRoofMaterial = roofLists[0]
if (addedRoofs.length === 0) {
const newAddedRoofs = []
newAddedRoofs.push({ ...selectedRoofMaterial, selected: true, index: 0 })
setAddedRoofs(newAddedRoofs)
}
setBasicSettings({ ...basicSetting, selectedRoofMaterial: selectedRoofMaterial })
}
const previousObjectNoRef = useRef(null)
const previousRoofMaterialsRef = useRef(null)
useEffect(() => { useEffect(() => {
// 지붕재 select 정보가 존재해야 배치면초기설정 DB 정보 비교 후 지붕재 정보를 가져올 수 있음 // 지붕재 select 정보가 존재해야 배치면초기설정 DB 정보 비교 후 지붕재 정보를 가져올 수 있음
if ( if (
@ -253,6 +217,39 @@ export function useCanvasSetting() {
if (settingsDataSave !== undefined) onClickOption2() if (settingsDataSave !== undefined) onClickOption2()
}, [settingsData]) }, [settingsData])
//지붕재 초기세팅
const addRoofMaterials = async () => {
if (roofMaterials.length !== 0) {
return
}
const { data } = await getRoofMaterialList()
const roofLists = data.map((item, idx) => ({
...item,
id: item.roofMatlCd,
name: item.roofMatlNm,
selected: idx === 0,
index: idx,
nameJp: item.roofMatlNmJp,
length: item.lenBase && parseInt(item.lenBase),
width: item.widBase && parseInt(item.widBase),
raft: item.raftBase && parseInt(item.raftBase),
layout: ['ROOF_ID_SLATE', 'ROOF_ID_SINGLE'].includes(item.roofMatlCd) ? ROOF_MATERIAL_LAYOUT.STAIRS : ROOF_MATERIAL_LAYOUT.PARALLEL,
hajebichi: item.roofPchBase && parseInt(item.roofPchBase),
pitch: item.pitch ? parseInt(item.pitch) : 4,
angle: item.angle ? parseInt(item.angle) : 21.8,
}))
setRoofMaterials(roofLists)
const selectedRoofMaterial = roofLists[0]
if (addedRoofs.length === 0) {
const newAddedRoofs = []
newAddedRoofs.push({ ...selectedRoofMaterial, selected: true, index: 0 })
setAddedRoofs(newAddedRoofs)
}
setBasicSettings({ ...basicSetting, selectedRoofMaterial: selectedRoofMaterial })
}
const getFonts = (itemValue) => { const getFonts = (itemValue) => {
if (!itemValue) return { id: 1, name: 'MS PGothic', value: 'MS PGothic' } if (!itemValue) return { id: 1, name: 'MS PGothic', value: 'MS PGothic' }
const data = [ const data = [
@ -414,55 +411,50 @@ export function useCanvasSetting() {
console.error('Data fetching error:', error) console.error('Data fetching error:', error)
} }
// if (!(Object.keys(canvasSetting).length === 0 && canvasSetting.constructor === Object)) {
// setBasicSettings({ ...canvasSetting })
// }
setCanvasSetting({ ...basicSetting }) setCanvasSetting({ ...basicSetting })
} }
// 기본설정(PlacementShapeSetting) 저장 // 기본설정(PlacementShapeSetting) 저장
const basicSettingSave = async () => { const basicSettingSave = async (params) => {
try { try {
const patternData = { const patternData = {
objectNo: correntObjectNo, objectNo: correntObjectNo,
roofSizeSet: Number(basicSetting.roofSizeSet), roofSizeSet: Number(params.roofSizeSet),
roofAngleSet: basicSetting.roofAngleSet, roofAngleSet: params.roofAngleSet,
roofMaterialsAddList: [ roofMaterialsAddList: [
{ {
roofApply: true, roofApply: true,
roofSeq: 0, roofSeq: 0,
roofMatlCd: roofMatlCd:
basicSetting.roofsData.roofMatlCd === null || basicSetting.roofsData.roofMatlCd === undefined params.roofsData.roofMatlCd === null || params.roofsData.roofMatlCd === undefined ? 'ROOF_ID_WA_53A' : params.roofsData.roofMatlCd,
? 'ROOF_ID_WA_53A' roofWidth: params.roofsData.roofWidth === null || params.roofsData.roofWidth === undefined ? 0 : params.roofsData.roofWidth,
: basicSetting.roofsData.roofMatlCd, roofHeight: params.roofsData.roofHeight === null || params.roofsData.roofHeight === undefined ? 0 : params.roofsData.roofHeight,
roofWidth:
basicSetting.roofsData.roofWidth === null || basicSetting.roofsData.roofWidth === undefined ? 0 : basicSetting.roofsData.roofWidth,
roofHeight:
basicSetting.roofsData.roofHeight === null || basicSetting.roofsData.roofHeight === undefined ? 0 : basicSetting.roofsData.roofHeight,
roofHajebichi: roofHajebichi:
basicSetting.roofsData.roofHajebichi === null || basicSetting.roofsData.roofHajebichi === undefined params.roofsData.roofHajebichi === null || params.roofsData.roofHajebichi === undefined ? 0 : params.roofsData.roofHajebichi,
? 0 roofGap: params.roofsData.roofGap === null || params.roofsData.roofGap === undefined ? 'HEI_455' : params.roofsData.roofGap,
: basicSetting.roofsData.roofHajebichi, roofLayout: params.roofsData.roofLayout === null || params.roofsData.roofLayout === undefined ? 'P' : params.roofsData.roofLayout,
roofGap: roofPitch: params.roofsData.roofPitch === null || params.roofsData.roofPitch === undefined ? 0 : params.roofsData.roofPitch,
basicSetting.roofsData.roofGap === null || basicSetting.roofsData.roofGap === undefined ? 'HEI_455' : basicSetting.roofsData.roofGap, roofAngle: params.roofsData.roofAngle === null || params.roofsData.roofAngle === undefined ? 0 : params.roofsData.roofAngle,
roofLayout:
basicSetting.roofsData.roofLayout === null || basicSetting.roofsData.roofLayout === undefined ? 'P' : basicSetting.roofsData.roofLayout,
roofPitch:
basicSetting.roofsData.roofPitch === null || basicSetting.roofsData.roofPitch === undefined ? 0 : basicSetting.roofsData.roofPitch,
roofAngle:
basicSetting.roofsData.roofAngle === null || basicSetting.roofsData.roofAngle === undefined ? 0 : basicSetting.roofsData.roofAngle,
}, },
], ],
} }
// await post({ url: `/api/canvas-management/canvas-basic-settings`, data: patternData }).then((res) => { //await post({ url: `/api/canvas-management/canvas-basic-settings`, data: patternData })
// swalFire({ text: getMessage(res.returnMessage) }) await post({ url: `/api/canvas-management/canvas-basic-settings`, data: patternData }).then((res) => {
// }) console.log('🚀 ~ basicSettingSave ~ res :', res)
await post({ url: `/api/canvas-management/canvas-basic-settings`, data: patternData })
swalFire({ text: getMessage(res.returnMessage) })
setBasicSettings({ ...params })
})
//Recoil 설정 //Recoil 설정
setCanvasSetting({ ...basicSetting }) setCanvasSetting({ ...basicSetting })
// 배치면초기설정 조회
fetchBasicSettings() fetchBasicSettings()
// 메뉴 설정
if (['2', '3'].includes(basicSetting?.roofSizeSet)) { if (['2', '3'].includes(basicSetting?.roofSizeSet)) {
setMenuNumber(3) setMenuNumber(3)
setType('surface') setType('surface')
@ -475,10 +467,14 @@ export function useCanvasSetting() {
//모듈 선택 데이터 초기화 //모듈 선택 데이터 초기화
resetModuleSelectionData() resetModuleSelectionData()
// 모듈 선택 데이터 초기화
moduleSelectedDataTrigger({ common: {}, module: {}, roofConstructions: [] }) moduleSelectedDataTrigger({ common: {}, module: {}, roofConstructions: [] })
// 모듈 선택 데이터 초기화
const isModuleExist = canvas.getObjects().some((obj) => obj.name === POLYGON_TYPE.MODULE) const isModuleExist = canvas.getObjects().some((obj) => obj.name === POLYGON_TYPE.MODULE)
if (!isModuleExist) { if (!isModuleExist) {
// 모듈 선택 데이터 초기화
resetSelectedModules() resetSelectedModules()
} }
} catch (error) { } catch (error) {
@ -587,20 +583,16 @@ export function useCanvasSetting() {
setAdsorptionPointMode({ ...adsorptionPointMode, adsorptionPoint: false }) setAdsorptionPointMode({ ...adsorptionPointMode, adsorptionPoint: false })
//치수선 설정 //치수선 설정
// setDimensionLineSettings({ ...dimensionLineSettings, ...dimensionLineSettingsState.default })
resetDimensionLineSettings() resetDimensionLineSettings()
//도면크기 설정 //도면크기 설정
// setPlanSizeSettingMode({ ...planSizeSettingMode, ...planSizeSettingState.default })
resetPlanSizeSettingMode() resetPlanSizeSettingMode()
// 데이터 설정 // 데이터 설정
// setSettingModalFirstOptions({ ...settingModalFirstOptions, ...settingModalFirstOptionsState.default })
resetSettingModalFirstOptions() resetSettingModalFirstOptions()
//setSettingModalSecondOptions({ ...settingModalSecondOptions, ...settingModalSecondOptionsState.default })
resetSettingModalSecondOptions() resetSettingModalSecondOptions()
// setGlobalFont({ ...globalFont, ...globalFontAtom.default }) // 데이터 초기화
resetGlobalFont() resetGlobalFont()
//점/선 그리드 //점/선 그리드