From ad7e72c12910e90d3d23730e6ebf984aba735197 Mon Sep 17 00:00:00 2001 From: hjjeong Date: Wed, 11 Mar 2026 16:44:12 +0900 Subject: [PATCH] =?UTF-8?q?WBS=20=ED=85=9C=ED=94=8C=EB=A6=BF=20(=EC=A0=9C?= =?UTF-8?q?=ED=92=88=EA=B4=80=EB=A6=AC=5Funit=EA=B4=80=EB=A6=AC)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../view/project/WBSExcelImportPopUp.jsp | 130 +++++++++++++++++- .../template/WBS_EXCEL_IMPORT_TEMPLATE.xlsx | Bin 8685 -> 9303 bytes src/com/pms/service/ProjectService.java | 86 ++++-------- 3 files changed, 148 insertions(+), 68 deletions(-) diff --git a/WebContent/WEB-INF/view/project/WBSExcelImportPopUp.jsp b/WebContent/WEB-INF/view/project/WBSExcelImportPopUp.jsp index 273a2d7..c3168d5 100644 --- a/WebContent/WEB-INF/view/project/WBSExcelImportPopUp.jsp +++ b/WebContent/WEB-INF/view/project/WBSExcelImportPopUp.jsp @@ -233,29 +233,119 @@ function generateObjId(){ return String(Math.abs(Math.floor(Math.random() * 2147483647))) + String(++rowSeq); } +function findLastDescendant(parentTr){ + var parentDepth = getRowDepth(parentTr[0]); + var lastDescendant = parentTr; + parentTr.nextAll("tr").each(function(){ + if(getRowDepth(this) > parentDepth){ + lastDescendant = $(this); + } else { + return false; + } + }); + return lastDescendant; +} + +function renumberAllRows(){ + var rows = $("#wbsTaskList tr:not(#row_total)"); + var counters = [0, 0, 0]; + rows.each(function(){ + var objId = $(this).find("input[name='WBS_TASK_OBJID']").val(); + var depth = parseInt($("#TASK_LEVEL_" + objId).val()) || 0; + if(depth < 1 || depth > 3) return true; + + if(depth === 1){ + counters[0]++; + counters[1] = 0; + counters[2] = 0; + } else if(depth === 2){ + counters[1]++; + counters[2] = 0; + } else { + counters[2]++; + } + + var unitNo; + if(depth === 1) unitNo = String(counters[0]); + else if(depth === 2) unitNo = counters[0] + "." + counters[1]; + else unitNo = counters[0] + "." + counters[1] + "." + counters[2]; + + $("#UNIT_NO_" + objId).val(unitNo); + $(this).find(".lvl_input").val(""); + $(this).find(".lvl_input[data-level='" + depth + "']").val(unitNo); + }); +} + function addRow(){ var objId = generateObjId(); + var checked = $("input[name='rowCheck']:checked"); + var autoLevel = ""; + var insertAfterTr = null; + + if(checked.length > 0){ + var selectedTr = checked.last().closest("tr"); + var selectedDepth = getRowDepth(selectedTr[0]); + autoLevel = selectedDepth; + insertAfterTr = findLastDescendant(selectedTr); + checked.prop("checked", false); + } + var tr = ''; tr += ''; tr += ''; tr += ''; tr += ''; - tr += ''; + tr += ''; tr += ''; tr += ''; tr += ''; tr += ''; tr += ''; - var checked = $("input[name='rowCheck']:checked"); - if(checked.length > 0){ - checked.last().closest("tr").after(tr); - checked.prop("checked", false); + if(insertAfterTr){ + insertAfterTr.after(tr); } else { $("#wbsTaskList").append(tr); } bindLevelInput(objId); + renumberAllRows(); +} + +function addChildRow(){ + var checked = $("input[name='rowCheck']:checked"); + if(checked.length == 0){ + Swal.fire('부모 행을 선택해 주세요'); + return; + } + var selectedTr = checked.last().closest("tr"); + var selectedDepth = getRowDepth(selectedTr[0]); + + if(selectedDepth >= 3){ + Swal.fire('수준 3 이하로는 추가할 수 없습니다'); + return; + } + + var objId = generateObjId(); + var autoLevel = selectedDepth + 1; + var insertAfterTr = findLastDescendant(selectedTr); + + var tr = ''; + tr += ''; + tr += ''; + tr += ''; + tr += ''; + tr += ''; + tr += ''; + tr += ''; + tr += ''; + tr += ''; + tr += ''; + + insertAfterTr.after(tr); + checked.prop("checked", false); + bindLevelInput(objId); + renumberAllRows(); } function deleteRow(){ @@ -264,10 +354,35 @@ function deleteRow(){ Swal.fire('삭제할 행을 선택해 주세요'); return; } + var removeTargets = []; + var hasChildren = false; checked.each(function(){ var objId = $(this).val(); - if($("#row_" + objId).attr("id") !== "row_total"){ - $("#row_" + objId).remove(); + var tr = $("#row_" + objId); + if(tr.attr("id") === "row_total") return true; + removeTargets.push(tr); + var parentDepth = getRowDepth(tr[0]); + tr.nextAll("tr").each(function(){ + if(getRowDepth(this) > parentDepth){ + removeTargets.push($(this)); + hasChildren = true; + } else { + return false; + } + }); + }); + + var msg = hasChildren ? '하위 항목도 함께 삭제됩니다. 삭제하시겠습니까?' : '삭제하시겠습니까?'; + Swal.fire({ + title: msg, + icon: 'warning', + showCancelButton: true, + confirmButtonText: '삭제', + cancelButtonText: '취소' + }).then(function(result){ + if(result.isConfirmed){ + $.each(removeTargets, function(i, tr){ tr.remove(); }); + renumberAllRows(); } }); } @@ -439,6 +554,7 @@ function saveWBS(){
+ diff --git a/WebContent/template/WBS_EXCEL_IMPORT_TEMPLATE.xlsx b/WebContent/template/WBS_EXCEL_IMPORT_TEMPLATE.xlsx index 952250ef83817961040a6df6cce3bf6ec1d53ad5..db0e131f179321ee9444b698a8a7fef0d29fe540 100644 GIT binary patch delta 5956 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 F{{Urf`Ii6y delta 5324 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 diff --git a/src/com/pms/service/ProjectService.java b/src/com/pms/service/ProjectService.java index a5170ac..47e5432 100644 --- a/src/com/pms/service/ProjectService.java +++ b/src/com/pms/service/ProjectService.java @@ -2786,7 +2786,7 @@ public class ProjectService { String path = CommonUtils.checkNull(fileMap.get("FILE_PATH")); String fileName = CommonUtils.checkNull(fileMap.get("SAVED_FILE_NAME")); - int lastColumnIndex = 2; + int lastColumnIndex = 4; FileInputStream fis = new FileInputStream(path + File.separator + fileName); XSSFWorkbook workBook = new XSSFWorkbook(fis); @@ -2803,13 +2803,12 @@ public class ProjectService { wbsMap.put("WBS_OBJID", CommonUtils.createObjId()); - String deptCode = ""; + String[] levelValues = new String[3]; + String taskName = ""; for(int columnIndex = 0 ; columnIndex < lastColumnIndex ; columnIndex++){ XSSFCell cell = row.getCell(columnIndex); - System.out.println("cell :: " + cell); - //데이버 유형별 get date String cellValue = ""; if(null == cell){ @@ -2818,27 +2817,19 @@ public class ProjectService { switch(cell.getCellType()){ case XSSFCell.CELL_TYPE_FORMULA: cellValue = cell.getCellFormula(); - System.out.println(columnIndex+":"+"XSSFCell.CELL_TYPE_FORMULA:"+cellValue); break; case XSSFCell.CELL_TYPE_NUMERIC: - DataFormatter formatter = new DataFormatter(); - cellValue = formatter.formatCellValue(cell); - System.out.println(columnIndex+":"+"XSSFCell.CELL_TYPE_STRING:"+cellValue); break; - case XSSFCell.CELL_TYPE_STRING: cellValue = cell.getStringCellValue()+""; - System.out.println(columnIndex+":"+"XSSFCell.CELL_TYPE_STRING:"+cellValue); break; case XSSFCell.CELL_TYPE_BLANK: - cellValue = cell.getBooleanCellValue()+""; - System.out.println(columnIndex+":"+"XSSFCell.CELL_TYPE_BLANK:"+cellValue); + cellValue = ""; break; case XSSFCell.CELL_TYPE_ERROR: cellValue = cell.getErrorCellValue()+""; - System.out.println(columnIndex+":"+"XSSFCell.CELL_TYPE_ERROR:"+cellValue); break; } } @@ -2849,56 +2840,29 @@ public class ProjectService { cellValue = CommonUtils.checkNull(cellValue); - //기본정보 시작=========================== - -/* //단계 - if(0 == columnIndex){ - wbsMap.put("STEP", cellValue); + if(columnIndex <= 2){ + levelValues[columnIndex] = cellValue; } - - //TASK명 - if(1 == columnIndex){ - wbsMap.put("TASK1", cellValue); - }*/ - - //공정명 - if(0 == columnIndex){ - wbsMap.put("TASK_NAME", cellValue); + if(columnIndex == 3){ + taskName = cellValue; } - //공정명 - if(1 == columnIndex){ - wbsMap.put("UNIT_NO", cellValue); - - resultList.add(wbsMap); - - System.out.println("wbsMap:"+wbsMap); - - break; - - } - - //담당자 - /*if(1 == columnIndex){ - wbsMap.put("USER_NAME", cellValue); - - if(!"".equals(cellValue)){ - - Map resultMap = new HashMap(); - Map codeParamMap = new HashMap(); - codeParamMap.put("USER_NAME", cellValue); - resultMap = commonService.getUserMap(codeParamMap); - - if(null != resultMap){ - wbsMap.put("USER_ID", CommonUtils.checkNull(resultMap.get("USER_ID"))); - wbsMap.put("USER_NAME", CommonUtils.checkNull(resultMap.get("USER_NAME"))); - } - } - resultList.add(wbsMap); - - System.out.println("wbsMap:"+wbsMap); - - break; - }*/ + } + + // 수준1/2/3 중 값이 있는 컬럼에서 UNIT_NO 결정 + String unitNo = ""; + if(!"".equals(CommonUtils.checkNull(levelValues[2]))){ + unitNo = levelValues[2]; + } else if(!"".equals(CommonUtils.checkNull(levelValues[1]))){ + unitNo = levelValues[1]; + } else if(!"".equals(CommonUtils.checkNull(levelValues[0]))){ + unitNo = levelValues[0]; + } + + if(!"".equals(unitNo) && !"".equals(taskName)){ + wbsMap.put("UNIT_NO", unitNo); + wbsMap.put("TASK_NAME", taskName); + resultList.add(wbsMap); + System.out.println("wbsMap:"+wbsMap); } } }