수동 회로 설정 및 집계표 수정

This commit is contained in:
김민식 2025-02-05 16:55:03 +09:00
parent b830a92ec9
commit ec0a8a5523
4 changed files with 176 additions and 164 deletions

View File

@ -94,16 +94,27 @@ export default function CircuitTrestleSetting({ id }) {
// PCS
getPcsAutoRecommendList(params).then((res) => {
if (res.data?.pcsItemList) {
const itemList = models.filter((model) => {
return res.data?.pcsItemList.map((item) => item.itemId).includes(model.itemId)
})
const selectedModels = itemList.map((model) => {
return {
...model,
id: uuidv4(),
isUsed: false,
let pcsItemList = []
res.data?.pcsItemList.forEach((item) => {
if (models.map((model) => model.itemId).includes(item.itemId)) {
pcsItemList.push({
...item,
id: uuidv4(),
isUsed: false,
})
}
})
// const selectedModels = pcsItemList
// const itemList = models.filter((model) => {
// return res.data?.pcsItemList.map((item) => item.itemId).includes(model.itemId)
// })
// const selectedModels = itemList.map((model) => {
// return {
// ...model,
// id: uuidv4(),
// isUsed: false,
// }
// })
//
const pcsVoltageChkParams = {
...getOptYn(),
@ -112,7 +123,7 @@ export default function CircuitTrestleSetting({ id }) {
pcsItemList: getPcsItemList(),
}
//
setSelectedModels(selectedModels)
setSelectedModels(pcsItemList)
//
getPcsVoltageChk(pcsVoltageChkParams).then((res) => {
if (res.resultCode === 'S') {
@ -205,24 +216,26 @@ export default function CircuitTrestleSetting({ id }) {
const getRoofSurfaceList = () => {
const roofSurfaceList = canvas.getObjects().filter((obj) => obj.name === POLYGON_TYPE.MODULE_SETUP_SURFACE)
roofSurfaceList.sort((a, b) => a.left - b.left || b.top - a.top)
return roofSurfaceList.map((obj) => {
return {
roofSurfaceId: obj.id,
roofSurface: canvas
.getObjects()
.filter((o) => o.id === obj.parentId)[0]
.directionText.replace(/[0-9]/g, ''),
roofSurfaceIncl: canvas.getObjects().filter((o) => o.id === obj.parentId)[0].roofMaterial.pitch,
moduleList: getModuleList(obj).map((module) => {
return {
itemId: module.moduleInfo.itemId,
circuit: module.circuitNumber ? module.circuitNumber : null,
pcsItemId: module.circuit ? module.circuit?.pcsItemId : null,
uniqueId: module.id ? module.id : null,
}
}),
}
})
return roofSurfaceList
.map((obj) => {
return {
roofSurfaceId: obj.id,
roofSurface: canvas
.getObjects()
.filter((o) => o.id === obj.parentId)[0]
.directionText.replace(/[0-9]/g, ''),
roofSurfaceIncl: canvas.getObjects().filter((o) => o.id === obj.parentId)[0].roofMaterial.pitch,
moduleList: getModuleList(obj).map((module) => {
return {
itemId: module.moduleInfo.itemId,
circuit: module.circuitNumber ? module.circuitNumber : null,
pcsItemId: module.circuit ? module.circuit?.pcsItemId : null,
uniqueId: module.id ? module.id : null,
}
}),
}
})
.filter((surface) => surface.moduleList.length > 0)
}
//
@ -338,7 +351,18 @@ export default function CircuitTrestleSetting({ id }) {
const params = {
...getOptYn(),
useModuleItemList: getUseModuleItemList(),
roofSurfaceList: getRoofSurfaceList(),
roofSurfaceList: getRoofSurfaceList().map((surface) => {
console.log(surface.moduleList)
return {
...surface,
moduleList: surface.moduleList.map((module) => {
return {
itemId: module.itemId,
uniqueId: module.uniqueId,
}
}),
}
}),
pcsItemList: getPcsItemList(),
}
@ -348,19 +372,41 @@ export default function CircuitTrestleSetting({ id }) {
const itemList = models.filter((model) => {
return res.data?.pcsItemList.map((item) => item.itemId).includes(model.itemId)
})
const selectedModels = itemList.map((model) => {
return {
...model,
id: uuidv4(),
let pcsItemList = []
let pcsObj = {}
models.forEach((model) => {
pcsObj[model.itemId] = model
})
res.data?.pcsItemList.forEach((item) => {
if (pcsObj[item.itemId]) {
pcsItemList.push({
...pcsObj[item.itemId],
isUsed: false,
id: uuidv4(),
})
}
})
// const selectedModels = itemList.map((model) => {
// return {
// ...model,
// id: uuidv4(),
// }
// })
const pcsVoltageChkParams = {
...getOptYn(),
useModuleItemList: getUseModuleItemList(),
roofSurfaceList: getRoofSurfaceList(),
pcsItemList: getPcsItemList(),
pcsItemList: pcsItemList.map((item) => {
return {
itemId: item.itemId,
pcsMkrCd: item.pcsMkrCd,
pcsSerCd: item.pcsSerCd,
}
}),
}
setSelectedModels(selectedModels)
setSelectedModels(pcsItemList)
getPcsVoltageChk(pcsVoltageChkParams).then((res) => {
setAllocationType(ALLOCATION_TYPE.PASSIVITY)
})
@ -535,53 +581,20 @@ export default function CircuitTrestleSetting({ id }) {
//
const handleClose = () => {
// //
// const circuitTexts = canvas.getObjects().filter((obj) => obj.name === 'circuitNumber')
// canvas.remove(...circuitTexts)
const circuitTexts = canvas.getObjects().filter((obj) => obj.name === 'circuitNumber')
canvas.remove(...circuitTexts)
//
canvas
.getObjects()
.filter((obj) => obj.name === POLYGON_TYPE.MODULE)
.forEach((obj) => {
obj.circuit = null
obj.pcsItemId = null
obj.circuitNumber = null
})
// //
// canvas
// .getObjects()
// .filter((obj) => obj.name === POLYGON_TYPE.MODULE)
// .forEach((obj) => {
// obj.circuit = null
// obj.pcsItemId = null
// obj.circuitNumber = null
// })
// canvas.renderAll()
// closePopup(id)
swalFire({
title: '변경사항을 저장하시겠습니까?',
//text: ' .',
type: 'confirm',
confirmButtonText: '저장',
cancelButtonText: '취소',
icon: 'warning',
confirmFn: async () => {
//
await onApply()
closePopup(id)
},
denyFn: () => {
//
const circuitTexts = canvas.getObjects().filter((obj) => obj.name === 'circuitNumber')
canvas.remove(...circuitTexts)
//
canvas
.getObjects()
.filter((obj) => obj.name === POLYGON_TYPE.MODULE)
.forEach((obj) => {
obj.circuit = null
obj.pcsItemId = null
obj.circuitNumber = null
})
canvas.renderAll()
closePopup(id)
},
})
canvas.renderAll()
closePopup(id)
}
return (

View File

@ -91,7 +91,6 @@ export default function PowerConditionalSelect(props) {
}
const onCheckSeries = (data) => {
console.log('data', data)
const copySeries = series.map((s) => {
return {
...s,
@ -99,12 +98,10 @@ export default function PowerConditionalSelect(props) {
}
})
setSeries(copySeries)
console.log('copySeries', copySeries)
handleSetmodels(copySeries.filter((s) => s.selected))
}
const handleSetmodels = (selectedSeries) => {
console.log('series', selectedSeries)
if (selectedSeries.length === 0) {
setModels([])
setSelectedModels([])
@ -149,7 +146,7 @@ export default function PowerConditionalSelect(props) {
return
}
setSelectedModels([...selectedModels, { ...selectedRow, id: uuidv4() }])
setSelectedModels([...selectedModels, { ...selectedRow, id: uuidv4(), isUsed: false }])
setSelectedRow(null)
}
@ -163,7 +160,6 @@ export default function PowerConditionalSelect(props) {
setSelectedMaker(option)
getPcsMakerList(option).then((res) => {
console.log('getPcsMakerList(series)', res.data)
setSeries(
res.data.map((series) => {
return { ...series, selected: false }

View File

@ -79,36 +79,36 @@ export default function PassivityCircuitAllocation(props) {
const setSurfaceInfo = () => {
const surfaces = canvas.getObjects().filter((obj) => POLYGON_TYPE.MODULE_SETUP_SURFACE === obj.name)
// setHeaders([header[0], { name: '', prop: 'circuit' }, ...header.slice(1)])
setRows(
rows.map((row) => {
return {
...row,
circuit: '',
}
}),
)
let totals = {}
// setRows(
// rows.map((row) => {
// return {
// ...row,
// circuit: '',
// }
// }),
// )
// let totals = {}
rows.forEach((row) => {
if (header.length === 4) {
if (!totals[header[2].prop]) totals[header[2].prop] = 0
totals[header[2].prop] += +row[header[2].prop]
} else if (header.length === 5) {
if (!totals[header[2].prop]) totals[header[2].prop] = 0
totals[header[2].prop] += +row[header[2].prop]
if (!totals[header[3].prop]) totals[header[3].prop] = 0
totals[header[3]] += +row[header[3]]
}
})
setFooter([
...['합계', ''],
...Object.keys(totals).map((key) => {
return totals[key]
}),
Object.keys(totals).reduce((acc, key) => {
return acc + totals[key]
}, 0),
])
// rows.forEach((row) => {
// if (header.length === 4) {
// if (!totals[header[2].prop]) totals[header[2].prop] = 0
// totals[header[2].prop] += +row[header[2].prop]
// } else if (header.length === 5) {
// if (!totals[header[2].prop]) totals[header[2].prop] = 0
// totals[header[2].prop] += +row[header[2].prop]
// if (!totals[header[3].prop]) totals[header[3].prop] = 0
// totals[header[3]] += +row[header[3]]
// }
// })
// setFooter([
// ...['', ''],
// ...Object.keys(totals).map((key) => {
// return totals[key]
// }),
// Object.keys(totals).reduce((acc, key) => {
// return acc + totals[key]
// }, 0),
// ])
// let totalWpout = 0
// const rows = surfaces.map((surface) => {
// let wpOut = 0
@ -226,10 +226,23 @@ export default function PassivityCircuitAllocation(props) {
setSelectedPcs(tempSelectedPcs)
canvas.add(moduleCircuitText)
})
console.log('🚀 ~ handleCircuitNumberFix ~ selectedModels:', selectedModels)
// let pcsList = [...selectedModels.map((model) => ({ ...model }))]
let pcsList = JSON.parse(JSON.stringify(selectedModels))
pcsList = pcsList.map((model) => {
console.log('🚀 ~ handleCircuitNumberFix ~ pcsList:', pcsList)
if (model.id === selectedPcs.id) {
model.isUsed = true
}
return model
})
console.log('🚀 ~ handleCircuitNumberFix ~ pcsList:', pcsList)
const roofSurfaceList = canvas
.getObjects()
.filter((obj) => POLYGON_TYPE.MODULE_SETUP_SURFACE === obj.name)
.filter((obj) => POLYGON_TYPE.MODULE_SETUP_SURFACE === obj.name && obj?.modules.length > 0)
.map((surface) => {
return {
roofSurfaceId: surface.id,
@ -246,45 +259,25 @@ export default function PassivityCircuitAllocation(props) {
})
console.log('uniqueCircuitNumbers', uniqueCircuitNumbers)
const usedPcses = selectedModels.filter((model) => model.isUsed)
const pcsItemList =
usedPcses.length === 0
? [
{
pcsMkrCd: selectedPcs.pcsMkrCd,
pcsSerCd: selectedPcs.pcsSerCd,
itemId: selectedPcs.itemId,
itemNm: selectedPcs.itemNm,
goodsNo: selectedPcs.goodsNo,
serQtyList: [
{
serQty: targetModules.length,
paralQty: uniqueCircuitNumbers.length,
rmdYn: 'Y',
usePossYn: 'Y',
roofSurfaceList: roofSurfaceList,
},
],
},
]
: selectedModels.map((model, index) => {
return {
pcsMkrCd: model.pcsMkrCd,
pcsSerCd: model.pcsSerCd,
itemId: model.itemId,
itemNm: model.itemNm,
goodsNo: model.goodsNo,
serQtyList: [
{
serQty: targetModules.length,
paralQty: uniqueCircuitNumbers.length,
rmdYn: 'Y',
usePossYn: 'Y',
roofSurfaceList: roofSurfaceList,
},
],
}
})
const usedPcses = pcsList.filter((model) => model.isUsed)
const pcsItemList = usedPcses.map((model, index) => {
return {
pcsMkrCd: model.pcsMkrCd,
pcsSerCd: model.pcsSerCd,
itemId: model.itemId,
itemNm: model.itemNm,
goodsNo: model.goodsNo,
serQtyList: [
{
serQty: targetModules.length,
paralQty: uniqueCircuitNumbers.length,
rmdYn: 'Y',
usePossYn: 'Y',
roofSurfaceList: roofSurfaceList,
},
],
}
})
const params = {
...getApiProps(),
@ -318,17 +311,15 @@ export default function PassivityCircuitAllocation(props) {
return
}
setSelectedModels(
selectedModels.map((model) => {
return { ...model, isUsed: model.id === selectedPcs.id ? true : model.isUsed }
}),
)
setSelectedModels(pcsList)
setTargetModules([])
setCircuitNumber(+circuitNumber + 1)
setModuleStatisticsData()
})
}
console.log('🚀 ~ handleCircuitNumberFix ~ selectedModels:', selectedModels)
console.log('🚀 ~ handleCircuitNumberFix ~ selectedModels:', selectedModels)
const getCircuitNumber = () => {
if (selectedModels.length === 1) {

View File

@ -243,6 +243,7 @@ export function useModule() {
},
})
}
setModuleStatisticsData()
}
const moduleCopy = (length, direction) => {
@ -303,6 +304,7 @@ export function useModule() {
},
})
}
setModuleStatisticsData()
}
const moduleMultiCopy = (type, length, direction) => {
@ -377,6 +379,7 @@ export function useModule() {
},
})
}
setModuleStatisticsData()
}
const moduleColumnRemove = (type) => {
@ -491,6 +494,7 @@ export function useModule() {
},
})
}
setModuleStatisticsData()
}
const moduleRowRemove = (type) => {
@ -606,6 +610,7 @@ export function useModule() {
},
})
}
setModuleStatisticsData()
}
const moduleColumnInsert = (type) => {
@ -701,6 +706,8 @@ export function useModule() {
},
})
}
moduleSetupSurface.set({ modules: [...moduleSetupSurface.modules, ...copyModules] })
setModuleStatisticsData()
}
const muduleRowInsert = (type) => {
@ -798,6 +805,9 @@ export function useModule() {
},
})
}
moduleSetupSurface.set({ modules: [...moduleSetupSurface.modules, ...copyModules] })
setModuleStatisticsData()
}
const alignModule = (type) => {
@ -865,6 +875,7 @@ export function useModule() {
surface.set({ modules: modules })
canvas.remove(activeModule)
canvas.renderAll()
setModuleStatisticsData()
}
const isOverlapOtherModules = (module, otherModules) => {
@ -947,7 +958,7 @@ export function useModule() {
]
const surfaceObjects = {}
const surfaces = canvas.getObjects().filter((obj) => obj.name === POLYGON_TYPE.MODULE_SETUP_SURFACE)
const rows = surfaces.map((surface) => {
surfaces.forEach((surface) => {
surfaceObjects[surface.id] = {
roofSurface: canvas.getObjects().filter((obj) => obj.id === surface.parentId)[0].directionText,
circuit: '-',
@ -984,11 +995,12 @@ export function useModule() {
})
})
let tempRows = []
console.log('surfaceObjects', surfaceObjects)
Object.keys(surfaceObjects).forEach((key) => {
let tempRow = {
name: surfaceObjects[key].roofSurface,
circuit: surfaceObjects[key].circuit,
wpOut: parseInt((surfaceObjects[key].wpOut / 1000).toFixed(3)),
wpOut: parseFloat(surfaceObjects[key].wpOut / 1000),
}
selectedModules.itemList.forEach((module) => {
tempRow[module.itemId] = surfaceObjects[key][module.itemId]
@ -999,7 +1011,7 @@ export function useModule() {
let row = {
name: surfaceObjects[key].roofSurface,
circuit: surfaceObjects[key].circuits[circuit].circuit,
wpOut: parseInt((surfaceObjects[key].circuits[circuit].circuits.wpOut / 1000).toFixed(3)),
wpOut: parseFloat(surfaceObjects[key].circuits[circuit].circuits.wpOut / 1000),
}
selectedModules.itemList.forEach((module) => {
row[module.itemId] = surfaceObjects[key].circuits[circuit].circuits[module.itemId]
@ -1007,14 +1019,14 @@ export function useModule() {
tempRows.push(row)
})
})
console.log('tempRows', tempRows)
const tempFooter = {
name: getMessage('modal.panel.batch.statistic.total'),
circuit: '-',
wpOut: tempRows.reduce((acc, row) => acc + row.wpOut, 0),
}
selectedModules.itemList.forEach((module) => {
tempFooter[module.itemId] = tempRows.reduce((acc, row) => acc + row[module.itemId], 0)
tempFooter[module.itemId] = tempRows.reduce((acc, row) => acc + (row[module.itemId] ? parseFloat(row[module.itemId]) : 0), 0)
})
setModuleStatistics({ header: tempHeader, rows: tempRows.filter((row) => row.wpOut !== 0), footer: tempFooter })
}