Files
jongryangje/writable/database/menu_site_seed_from_csv.sql
taekyoungc 4e557d4be1 Initial project import for team collaboration.
Exclude local docs, MCP, and secrets via gitignore.

Made-with: Cursor
2026-03-25 12:05:33 +09:00

293 lines
12 KiB
SQL

-- CSV "종량제_개발목록_20260127(전체 메뉴 - 1차정리).csv" 기반으로
-- site 타입(menu_type.mt_code='site')의 1차/2차 메뉴를 초기 시드하는 SQL 뼈대입니다.
--
-- 1행: 1차 메뉴명 리스트
-- 2행 이후: 각 열이 해당 1차 메뉴의 2차 메뉴명에 해당.
--
-- 실제 운영 시에는 CSV를 파싱해서 INSERT를 생성하는 스크립트를 사용하는 편이 낫고,
-- 아래 SQL은 구조 이해 및 수동 시드를 위한 참고용입니다.
-- 1) site용 mt_idx 조회 (예: @mt_site)
SET @mt_site := (SELECT mt_idx FROM menu_type WHERE mt_code = 'site' LIMIT 1);
-- 3) 2차 메뉴 예시
-- CSV의 2행 이후를 바탕으로, 각 1차 메뉴 아래에 2차 메뉴를 추가하는 방식의 예시입니다.
-- 아래 예시는 구조를 보여주기 위한 샘플이며, 실제 라우트(mm_link)는 구현 후에 맞게 수정해야 합니다.
-- 예: "기본정보관리" 하위 2차 메뉴들 (PWB-030100~ 등)
SET @parent_basic := (
SELECT mm_idx FROM menu
WHERE mt_idx = @mt_site AND lg_idx = 1 AND mm_pidx = 0 AND mm_name = '기본정보관리'
LIMIT 1
);
INSERT INTO menu (mt_idx, lg_idx, mm_name, mm_link, mm_pidx, mm_dep, mm_num, mm_cnode, mm_level, mm_is_view)
SELECT @mt_site, 1, t.mm_name, '', @parent_basic, 1, t.mm_num, 0, '', 'Y'
FROM (
SELECT 0 AS mm_num, '기본 코드 관리' AS mm_name UNION ALL
SELECT 1, '단가 관리' UNION ALL
SELECT 2, '포장 단위 관리' UNION ALL
SELECT 3, '판매 대행소 관리' UNION ALL
SELECT 4, '담당자 관리' UNION ALL
SELECT 5, '업체 관리' UNION ALL
SELECT 6, '무료용 대상자 관리' UNION ALL
SELECT 7, '지정 판매소 관리' UNION ALL
SELECT 8, '지정 판매소 조회' UNION ALL
SELECT 9, '지정 판매소 신규/취소 현황' UNION ALL
SELECT 10, '지정판매소 바코드 출력' UNION ALL
SELECT 11, 'PC -> PDA로 자료 전송' UNION ALL
SELECT 12, 'PDA -> PC로 자료 전송' UNION ALL
SELECT 13, '올린 자료 처리' UNION ALL
SELECT 14, '시찰 처리' UNION ALL
SELECT 15, 'PASSWORD 변경' UNION ALL
SELECT 16, '환경 설정' UNION ALL
SELECT 17, '지정 판매소 현황'
) AS t
WHERE @parent_basic IS NOT NULL
AND NOT EXISTS (
SELECT 1 FROM menu m
WHERE m.mt_idx = @mt_site
AND m.lg_idx = 1
AND m.mm_pidx = @parent_basic
AND m.mm_name = t.mm_name
);
-- 2) 1차: 발주 입고 관리 하위 메뉴
SET @parent_order := (
SELECT mm_idx FROM menu
WHERE mt_idx = @mt_site AND lg_idx = 1 AND mm_pidx = 0 AND mm_name = '발주 입고 관리'
LIMIT 1
);
INSERT INTO menu (mt_idx, lg_idx, mm_name, mm_link, mm_pidx, mm_dep, mm_num, mm_cnode, mm_level, mm_is_view)
SELECT @mt_site, 1, t.mm_name, '', @parent_order, 1, t.mm_num, 0, '', 'Y'
FROM (
SELECT 0 AS mm_num, '발주 등록' AS mm_name UNION ALL
SELECT 1, '발주 변경' UNION ALL
SELECT 2, 'LOT-No 디스켓 불출' UNION ALL
SELECT 3, '발주 현황' UNION ALL
SELECT 4, '발주 입고[스캐너]' UNION ALL
SELECT 5, '일괄입고' UNION ALL
SELECT 6, '입고 현황'
) AS t
WHERE @parent_order IS NOT NULL
AND NOT EXISTS (
SELECT 1 FROM menu m
WHERE m.mt_idx = @mt_site
AND m.lg_idx = 1
AND m.mm_pidx = @parent_order
AND m.mm_name = t.mm_name
);
-- 3) 1차: 불출 관리 하위 메뉴
SET @parent_issue := (
SELECT mm_idx FROM menu
WHERE mt_idx = @mt_site AND lg_idx = 1 AND mm_pidx = 0 AND mm_name = '불출 관리'
LIMIT 1
);
INSERT INTO menu (mt_idx, lg_idx, mm_name, mm_link, mm_pidx, mm_dep, mm_num, mm_cnode, mm_level, mm_is_view)
SELECT @mt_site, 1, t.mm_name, '', @parent_issue, 1, t.mm_num, 0, '', 'Y'
FROM (
SELECT 0 AS mm_num, '무료 불출 현황' AS mm_name UNION ALL
SELECT 1, '무료용 불출 처리' UNION ALL
SELECT 2, '무료용 불출 취소'
) AS t
WHERE @parent_issue IS NOT NULL
AND NOT EXISTS (
SELECT 1 FROM menu m
WHERE m.mt_idx = @mt_site
AND m.lg_idx = 1
AND m.mm_pidx = @parent_issue
AND m.mm_name = t.mm_name
);
-- 4) 1차: 재고 관리 하위 메뉴
SET @parent_inventory := (
SELECT mm_idx FROM menu
WHERE mt_idx = @mt_site AND lg_idx = 1 AND mm_pidx = 0 AND mm_name = '재고 관리'
LIMIT 1
);
INSERT INTO menu (mt_idx, lg_idx, mm_name, mm_link, mm_pidx, mm_dep, mm_num, mm_cnode, mm_level, mm_is_view)
SELECT @mt_site, 1, t.mm_name, '', @parent_inventory, 1, t.mm_num, 0, '', 'Y'
FROM (
SELECT 0 AS mm_num, '재고 현황' AS mm_name UNION ALL
SELECT 1, '실사 관리' UNION ALL
SELECT 2, '실사 선별' UNION ALL
SELECT 3, '실사 선별 조회' UNION ALL
SELECT 4, '실사 등록' UNION ALL
SELECT 5, '실사 재고 조회' UNION ALL
SELECT 6, '실사 오류 조회' UNION ALL
SELECT 7, '실사 선별 취소' UNION ALL
SELECT 8, '실사 등록 취소'
) AS t
WHERE @parent_inventory IS NOT NULL
AND NOT EXISTS (
SELECT 1 FROM menu m
WHERE m.mt_idx = @mt_site
AND m.lg_idx = 1
AND m.mm_pidx = @parent_inventory
AND m.mm_name = t.mm_name
);
-- 5) 1차: 판매 관리 하위 메뉴
SET @parent_sales := (
SELECT mm_idx FROM menu
WHERE mt_idx = @mt_site AND lg_idx = 1 AND mm_pidx = 0 AND mm_name = '판매 관리'
LIMIT 1
);
INSERT INTO menu (mt_idx, lg_idx, mm_name, mm_link, mm_pidx, mm_dep, mm_num, mm_cnode, mm_level, mm_is_view)
SELECT @mt_site, 1, t.mm_name, '', @parent_sales, 1, t.mm_num, 0, '', 'Y'
FROM (
SELECT 0 AS mm_num, '전화 접수' AS mm_name UNION ALL
SELECT 1, '전화 접수 관리' UNION ALL
SELECT 2, '지정 판매소 판매' UNION ALL
SELECT 3, '지정 판매소 반품' UNION ALL
SELECT 4, '지정 판매소 판매 취소' UNION ALL
SELECT 5, '지정 판매소 반품 취소'
) AS t
WHERE @parent_sales IS NOT NULL
AND NOT EXISTS (
SELECT 1 FROM menu m
WHERE m.mt_idx = @mt_site
AND m.lg_idx = 1
AND m.mm_pidx = @parent_sales
AND m.mm_name = t.mm_name
);
-- 6) 1차: 판매 현황 하위 메뉴
SET @parent_sales_stats := (
SELECT mm_idx FROM menu
WHERE mt_idx = @mt_site AND lg_idx = 1 AND mm_pidx = 0 AND mm_name = '판매 현황'
LIMIT 1
);
INSERT INTO menu (mt_idx, lg_idx, mm_name, mm_link, mm_pidx, mm_dep, mm_num, mm_cnode, mm_level, mm_is_view)
SELECT @mt_site, 1, t.mm_name, '', @parent_sales_stats, 1, t.mm_num, 0, '', 'Y'
FROM (
SELECT 0 AS mm_num, '지정 판매소 일 판매대장' AS mm_name UNION ALL
SELECT 1, '지정 판매소 기간별 판매대장' UNION ALL
SELECT 2, '일계표' UNION ALL
SELECT 3, '기간별 판매현황[일집계]' UNION ALL
SELECT 4, '기간별 판매현황[기간집계]' UNION ALL
SELECT 5, '년 판매 현황' UNION ALL
SELECT 6, '지정 판매소 별 판매현황(수량)' UNION ALL
SELECT 7, '지정 판매소 별 판매현황(금액)' UNION ALL
SELECT 8, '지정판매소별 거래현황' UNION ALL
SELECT 9, '홈텍스 처리'
) AS t
WHERE @parent_sales_stats IS NOT NULL
AND NOT EXISTS (
SELECT 1 FROM menu m
WHERE m.mt_idx = @mt_site
AND m.lg_idx = 1
AND m.mm_pidx = @parent_sales_stats
AND m.mm_name = t.mm_name
);
-- 7) 1차: 봉투 수불 관리 하위 메뉴
SET @parent_flow := (
SELECT mm_idx FROM menu
WHERE mt_idx = @mt_site AND lg_idx = 1 AND mm_pidx = 0 AND mm_name = '봉투 수불 관리'
LIMIT 1
);
INSERT INTO menu (mt_idx, lg_idx, mm_name, mm_link, mm_pidx, mm_dep, mm_num, mm_cnode, mm_level, mm_is_view)
SELECT @mt_site, 1, t.mm_name, '', @parent_flow, 1, t.mm_num, 0, '', 'Y'
FROM (
SELECT 0 AS mm_num, '기타 입출고' AS mm_name UNION ALL
SELECT 1, '기간별 봉투 수불 현황' UNION ALL
SELECT 2, '일일 봉투 수불 현황' UNION ALL
SELECT 3, '반품/파기 현황' UNION ALL
SELECT 4, '쓰레기 봉투 수급 계획' UNION ALL
SELECT 5, 'LOT 수불 조회'
) AS t
WHERE @parent_flow IS NOT NULL
AND NOT EXISTS (
SELECT 1 FROM menu m
WHERE m.mt_idx = @mt_site
AND m.lg_idx = 1
AND m.mm_pidx = @parent_flow
AND m.mm_name = t.mm_name
);
-- 8) 1차: 통계 분석 관리 하위 메뉴
SET @parent_analytics := (
SELECT mm_idx FROM menu
WHERE mt_idx = @mt_site AND lg_idx = 1 AND mm_pidx = 0 AND mm_name = '통계 분석 관리'
LIMIT 1
);
INSERT INTO menu (mt_idx, lg_idx, mm_name, mm_link, mm_pidx, mm_dep, mm_num, mm_cnode, mm_level, mm_is_view)
SELECT @mt_site, 1, t.mm_name, '', @parent_analytics, 1, t.mm_num, 0, '', 'Y'
FROM (
SELECT 0 AS mm_num, '전년 대비 판매 분석' AS mm_name UNION ALL
SELECT 1, '월별 판매 추이 분석' UNION ALL
SELECT 2, '계절별 판매 추이 분석'
) AS t
WHERE @parent_analytics IS NOT NULL
AND NOT EXISTS (
SELECT 1 FROM menu m
WHERE m.mt_idx = @mt_site
AND m.lg_idx = 1
AND m.mm_pidx = @parent_analytics
AND m.mm_name = t.mm_name
);
-- 9) 1차: 창 하위 메뉴
SET @parent_window := (
SELECT mm_idx FROM menu
WHERE mt_idx = @mt_site AND lg_idx = 1 AND mm_pidx = 0 AND mm_name = ''
LIMIT 1
);
INSERT INTO menu (mt_idx, lg_idx, mm_name, mm_link, mm_pidx, mm_dep, mm_num, mm_cnode, mm_level, mm_is_view)
SELECT @mt_site, 1, t.mm_name, '', @parent_window, 1, t.mm_num, 0, '', 'Y'
FROM (
SELECT 0 AS mm_num, 'PDA 수정' AS mm_name UNION ALL
SELECT 1, '바둑판식 배열' UNION ALL
SELECT 2, '계단식 배열' UNION ALL
SELECT 3, '계층식 배열'
) AS t
WHERE @parent_window IS NOT NULL
AND NOT EXISTS (
SELECT 1 FROM menu m
WHERE m.mt_idx = @mt_site
AND m.lg_idx = 1
AND m.mm_pidx = @parent_window
AND m.mm_name = t.mm_name
);
-- 10) 1차: 도움말 하위 메뉴
SET @parent_help := (
SELECT mm_idx FROM menu
WHERE mt_idx = @mt_site AND lg_idx = 1 AND mm_pidx = 0 AND mm_name = '도움말'
LIMIT 1
);
INSERT INTO menu (mt_idx, lg_idx, mm_name, mm_link, mm_pidx, mm_dep, mm_num, mm_cnode, mm_level, mm_is_view)
SELECT @mt_site, 1, t.mm_name, '', @parent_help, 1, t.mm_num, 0, '', 'Y'
FROM (
SELECT 0 AS mm_num, '도움말 항목' AS mm_name UNION ALL
SELECT 1, '원격 요청' UNION ALL
SELECT 2, 'pda 리셋' UNION ALL
SELECT 3, '번호알기' UNION ALL
SELECT 4, 'Data Backup' UNION ALL
SELECT 5, '컴포트 설정' UNION ALL
SELECT 6, 'Version 정보' UNION ALL
SELECT 7, '종료' UNION ALL
SELECT 8, '1GBMS'
) AS t
WHERE @parent_help IS NOT NULL
AND NOT EXISTS (
SELECT 1 FROM menu m
WHERE m.mt_idx = @mt_site
AND m.lg_idx = 1
AND m.mm_pidx = @parent_help
AND m.mm_name = t.mm_name
);