hjjeong
bd47ca80df
생산관리 M-BOM PR-B5+ — BOM 할당 다이얼로그 운영판 1:1 재구성 + 미리보기 트리
...
운영판 mBomEbomSelectPopup.jsp (324 lines) 1:1 레이아웃:
· 헤더 — "E-BOM 선택" / "E-BOM 상세 및 변경" 토글 제목 + 우측 [E-BOM 변경] 버튼
· 현재 할당된 E-BOM 정보 카드 — 2×3 table (제품구분/품번/품명/Ver/등록일/작성자)
· 리스트 토글 — 할당된 경우 변경 모드 ON 시에만 노출
· 검색폼 운영판 매칭 — 제품구분(SmartSelect) + 품번 + 품명 + 등록일(범위)
· 리스트 헤더 우측 [조회][E-BOM 할당] 버튼 (footer 제거)
· 선택 시 하단 미리보기 트리 자동 로드 (read-only, 동적 LEVEL + 폴더아이콘)
신규 백엔드:
· mbomService.previewEbomTree(bomReportObjid) — EBOM_WORKING_TREE_SQL 재사용
· GET /api/production/mbom/ebom-preview/:bomReportObjid
· searchAssignableEboms 필터: material/supplier → product_cd/from_date/to_date 운영판 매칭
· objid 단건 필터 추가 — 현재 할당 E-BOM 카드 정보 자체 로드용
프론트:
· MbomAssignDialog 완전 재작성 (full layout, SmartSelect, 미리보기 PreviewTree 컴포넌트)
· MbomDetailDialog: currentEbomObjid prop 으로 단순화 (다이얼로그 내부에서 상세 fetch)
· mbomApi.previewEbomTree + AssignableEbomFilter 타입 매칭
이전 b38f5957 의 PR-B5 베이스(검색/할당) 위에 운영판 UX 정합 강화.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-14 18:13:10 +09:00
hjjeong
b38f5957f2
구매관리 7메뉴 신규 + M-BOM PR-B3·B5 + 발주관리 DataGrid 통일 + 생산계획&실적 라우트
...
구매관리 (wace 1:1)
- backend: services/purchaseService.ts (7 list + 옵션 3종) + controllers/purchaseController.ts + routes/purchaseRoutes.ts (/api/purchase 마운트)
- frontend: lib/api/purchase.ts + 7 page.tsx (list/quote-request/proposal/inbound/inbound-by-item/inbound-by-date/project-status)
- 영업관리 4메뉴 DataGrid 패턴 통일 — pageSizeOptions=[10,15,20,50,100], emptyMessage, showColumnSettings/summaryStats/onRefresh/onDownload/showChart
- 마스터단독 데이터(sales_request_master, project_mgmt+mbom_detail) 노출, detail/part 누락 테이블 의존은 빈 그리드 + UI
발주관리 (purchase/order/page.tsx)
- EDataTable → DataGrid 교체 + logicstudio 6종 props + 날짜/숫자 pre-format
M-BOM PR-B3 — 구매리스트 생성 (wace createPurchaseListFromMBom.do 1:1)
- mbomService.createSalesRequest + controller + route POST /api/production/mbom/sales-request
- 단건 체크 + 1:1 강제 + R-YYYYMMDD-NNN 채번 + sales_request_master 단건 INSERT
- production/mbom/page.tsx 에 [구매리스트 생성] 버튼
M-BOM PR-B5 — BOM 할당 (mBomEbomSelectPopup.do)
- mbomService.searchAssignableEboms/assignBom + controller + routes
- MbomAssignDialog 신규, MbomDetailDialog 통합
생산관리 4메뉴 라우트 (생산계획&실적, 소요량)
- prodPlanResultService/Controller + productionPlanResultRoutes (planResult/mbomReq)
- mbomRequirementService + 4 page.tsx (prod-plan-result, prod-plan-result-equip, raw-material-requirement, semi-product-requirement)
- lib/api/prodPlanResult.ts
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-14 17:31:12 +09:00
hjjeong
dee03f6024
생산관리 M-BOM PR-B2 — 본 편집 다이얼로그 행 추가/삭제 (팝업 방식)
...
행 추가: MbomAddPartDialog 신설 (devPartApi.list 재사용)
· 품번/품명 검색 + 체크박스 multi-select + 페이지네이션
· 선택 행 1개면 그 자식으로 추가, 없으면 root (level=1)
편집 모드 확장 (MbomDetailDialog):
· 체크박스 컬럼(맨 왼쪽) + 전체 선택 토글
· 선택 행 파란 배경, 새 행 초록 배경 (temp- prefix 식별)
· toolbar [+ 행 추가] / [선택 삭제] 버튼 추가
· 선택 삭제 — cascade(선택 + 하위) + 확인창
backend save() UPDATE 분기:
· client temp- child_objid → 서버 발급 createObjId 매핑
(객체 ID 안정성 + DB 에 임시 ID 잔존 방지 + 충돌 회피)
· parent_objid 가 temp- 참조면 신규 ID 로 remap
운영판은 좌(M-BOM)+중앙(<<,>>,변경)+우(소스 트리) 3분할이지만
좌측 19컬럼이 좁아져 가로스크롤 강제되는 약점. 팝업 방식이
트리 풀너비 확보 + 모바일 친화 → 사용자 결정으로 팝업 채택.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-14 16:59:29 +09:00
hjjeong
8dd5f184ae
생산관리 M-BOM 변경이력 다이얼로그(PR-B4) + 그리드 컬럼 폭 다듬기
...
운영 productionplanning.getMbomHistory (3448~3470) 1:1 이식:
· backend mbomService.getHistory(projectObjid) — project 단위 mbom_header 변경이력
시간순 최신 우선, USER_INFO join 으로 변경자명 함께
· GET /api/production/mbom/history/:projectObjid
· frontend MbomHistoryDialog — 5컬럼 그리드(변경일시/유형/내용/변경자/M-BOM품번)
CREATE=파란 뱃지, UPDATE=황색 뱃지, max-w-900px
· MbomDetailDialog toolbar 에 "변경이력" 버튼 (편집 모드 아닐 때만 노출)
PR-B1 의 history 저장 결과를 사용자가 직접 확인할 수 있도록 보는 화면 마무리.
부수: production/mbom/page 그리드 컬럼 폭 정돈 + summaryStats(전체/페이지/수주합/M-BOM 비율).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-14 16:39:48 +09:00
hjjeong
7a7f4f03b5
생산관리 M-BOM 본 편집(PR-B1) + 폴더 컬럼 + DataGrid 서버 페이지네이션 + bigint=varchar fix
...
PR-B1 본 편집/저장 (운영 saveMbom.do 1:1)
· 매퍼 7종 1:1 (insert/updateMbomHeader, insert/updateMbomDetail,
deleteMbomDetailByObjid, insertMbomHistory, updateProjectMbomStatus)
· 신규 CREATE: createObjId + generateMbomNo(M-{partNo}-YYMMDD-NN) +
child_objid 재매핑 + detail 일괄 insert + history(CREATE) + project_mgmt.mbom_status='Y'
· 수정 UPDATE: 기존 mbom_header.objid UPSERT(insert/update/delete) + history(UPDATE)
· POST /api/production/mbom/save (BEGIN/COMMIT/ROLLBACK 트랜잭션)
· MbomDetailDialog: '본 편집' 토글 + 13개 셀 인라인 편집 + 저장/취소 가드
M-BOM 컬럼 폴더 아이콘
· production/mbom/page.tsx: mbom_status 컬럼 → mbom_has(0/1) renderType=folder
· onClick → MbomDetailDialog 오픈 (행 더블클릭도 그대로 유지)
· 운영판 wace 견적/partMng 폴더 아이콘 패턴 1:1
DataGrid 서버 페이지네이션
· props 신설: serverPaging/serverPage/serverPageSize/serverTotalItems
+ onPageChange/onPageSizeChange
· 5메뉴 적용: production/mbom, development/change-list/ebom-regist/part-search/part-regist
· pageSizeOptions=[10,15,20,50,100,200,500] 통일
· 클라이언트 모드 하위호환 유지
bigint=varchar fix (mbom 트리 SQL 4종)
· ATTACH_FILE_INFO 서브쿼리: P.OBJID(bigint) = F.TARGET_OBJID(varchar) → P.OBJID::varchar 캐스트
· EBOM_WORKING_TREE_SQL INNER JOIN: P.OBJID = COALESCE(V.LAST_PART_OBJID,V.PART_NO) → ::varchar 캐스트
· 사용자 보고: 폴더 클릭 시 'operator does not exist: bigint = character varying' 토스트
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-14 16:26:20 +09:00
hjjeong
49956f7afa
개발관리·생산관리 — 3D/2D/PDF 카운트 컬럼을 폴더 아이콘으로 통일
...
사용자 보고: "품명/3D 컬럼이 좁아서 겹쳐 보임 + 폴더 모양(파랑/투명)으로 표시해줘"
운영판 wace 견적현황·partMng 폴더 아이콘 패턴 1:1 적용:
- 값 > 0 → 파란 폴더 (fill-[#1a73e8])
- 값 = 0 → 흰색 폴더 (투명 효과, fill-white + muted text)
수정:
- app/(main)/COMPANY_16/development/part-regist/page.tsx — 3D/2D/PDF (60→70px, center, folder)
- app/(main)/COMPANY_16/development/part-search/page.tsx — 3D/2D/PDF (60→70px, center, folder)
- app/(main)/COMPANY_16/development/ebom-search/page.tsx — 3D/2D/PDF (60→70px width 통일)
- components/development/BomReportTreeDialog.tsx — "Y/공백" → FolderCell
- components/production/MbomDetailDialog.tsx — "Y/공백" → FolderCell
sales/{order,sale,revenue}.tsx 의 cu01_cnt 는 "주문서첨부" clip 아이콘이라 별 의미라 미수정.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-13 17:40:25 +09:00
hjjeong
dd88dc6e8c
생산관리>M-BOM 관리 — PR-A2 단건 상세 + read-only 트리 4분기 (wace mBomPopupLeft.do 1:1)
...
행 더블클릭 → MbomDetailDialog (헤더 메타 + 동적 LEVEL × 19컬럼 트리 그리드).
운영판 ProductionPlanningController:1113~1276 의 4분기 자동 판별을 백엔드에서 처리:
1) SAVED mbom_header.status='Y' 우선 → getSavedMbomTreeList CTE
2) ASSIGNED_EBOM source_bom_type='EBOM' → partMng.getBOMTreeList(working) CTE
3) ASSIGNED_MBOM source_bom_type='MBOM' → getMbomStructureOnly CTE
4) TEMPLATE Machine 이외 + 동일 part_no → mbom_header 템플릿 CTE
5) NONE 빈 트리
backend:
- mbomService.getDetail (getProjectMgmtDetail 1:1, TOTAL_PROD_QTY = production_plan 우선)
- mbomService.getTree (4분기 orchestrator + 매퍼 4종 CTE 1:1)
- GET /api/production/mbom/detail/:objid
- GET /api/production/mbom/tree/:objid
frontend:
- lib/api/mbom.ts : MbomDetail / MbomTreeRow / MbomBomDataType / getDetail / getTree
- components/production/MbomDetailDialog.tsx (max-w-1600px, 헤더 14필드 + 트리 그리드)
- page.tsx 행 더블클릭 핸들러
검증: O-RING (593315995) SAVED 분기 5행 정상. TOTAL_PROD_QTY production_plan=5 / QUANTITY=2 fallback 확인.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-13 16:29:52 +09:00