Files
jongryangje/writable/database/menu_site_seed_from_csv.sql

387 lines
15 KiB
MySQL
Raw Normal View History

-- 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,
CASE t.mm_name
WHEN '기본 코드 관리' THEN 'bag/code-kinds'
WHEN '단가 관리' THEN 'bag/bag-prices'
WHEN '포장 단위 관리' THEN 'bag/packaging-units/manage'
WHEN '판매 대행소 관리' THEN 'bag/sales-agencies'
WHEN '담당자 관리' THEN 'bag/managers'
WHEN '업체 관리' THEN 'bag/companies'
WHEN '무료용 대상자 관리' THEN 'bag/free-recipients'
WHEN '지정 판매소 관리' THEN 'bag/designated-shops'
WHEN '지정 판매소 조회' THEN 'bag/designated-shops/browse'
WHEN '지정 판매소 신규/취소 현황' THEN 'bag/designated-shops/district-new-cancel'
WHEN '지정판매소 바코드 출력' THEN 'bag/designated-shops/barcode'
WHEN 'PASSWORD 변경' THEN 'bag/password-change'
WHEN '환경 설정' THEN 'dashboard'
WHEN '지정 판매소 현황' THEN 'bag/designated-shops/district-new-cancel'
ELSE ''
END,
@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,
CASE t.mm_name
WHEN '발주 등록' THEN 'bag/order/create'
WHEN '발주 변경' THEN 'bag/bag-orders'
WHEN '발주 현황' THEN 'bag/bag-orders'
WHEN '발주 입고[스캐너]' THEN 'bag/receiving/create'
WHEN '입고 현황' THEN 'bag/bag-receivings'
ELSE ''
END,
@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,
CASE t.mm_name
WHEN '무료 불출 현황' THEN 'bag/bag-issues'
WHEN '무료용 불출 처리' THEN 'bag/issue/create'
WHEN '무료용 불출 취소' THEN 'bag/issue'
ELSE ''
END,
@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,
CASE t.mm_name
WHEN '재고 현황' THEN 'bag/inventory'
WHEN '실사 관리' THEN 'bag/inventory/adjust'
ELSE ''
END,
@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,
CASE t.mm_name
WHEN '전화 접수' THEN 'bag/shop-orders'
WHEN '전화 접수 관리' THEN 'bag/shop-orders'
WHEN '지정 판매소 판매' THEN 'bag/sale/create'
WHEN '지정 판매소 반품' THEN 'bag/bag-sales'
WHEN '지정 판매소 판매 취소' THEN 'bag/bag-sales'
WHEN '지정 판매소 반품 취소' THEN 'bag/bag-sales'
ELSE ''
END,
@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,
CASE t.mm_name
WHEN '지정 판매소 일 판매대장' THEN 'bag/reports/sales-ledger'
WHEN '지정 판매소 기간별 판매대장' THEN 'bag/reports/sales-ledger'
WHEN '일계표' THEN 'bag/reports/daily-summary'
WHEN '기간별 판매현황[일집계]' THEN 'bag/reports/period-sales'
WHEN '기간별 판매현황[기간집계]' THEN 'bag/reports/period-sales'
WHEN '년 판매 현황' THEN 'bag/reports/yearly-sales'
WHEN '지정 판매소 별 판매현황(수량)' THEN 'bag/reports/shop-sales'
WHEN '지정 판매소 별 판매현황(금액)' THEN 'bag/reports/shop-sales'
WHEN '지정판매소별 거래현황' THEN 'bag/reports/shop-sales'
WHEN '홈텍스 처리' THEN 'bag/reports/hometax-export'
ELSE ''
END,
@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,
CASE t.mm_name
WHEN '기타 입출고' THEN 'bag/reports/misc-flow'
WHEN '기간별 봉투 수불 현황' THEN 'bag/flow'
WHEN '일일 봉투 수불 현황' THEN 'bag/waste-suibal-enterprise'
WHEN '반품/파기 현황' THEN 'bag/reports/returns'
WHEN '쓰레기 봉투 수급 계획' THEN 'bag/reports/supply-demand'
WHEN 'LOT 수불 조회' THEN 'bag/reports/lot-flow'
ELSE ''
END,
@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,
CASE t.mm_name
WHEN '전년 대비 판매 분석' THEN 'bag/analytics'
WHEN '월별 판매 추이 분석' THEN 'bag/analytics'
WHEN '계절별 판매 추이 분석' THEN 'bag/analytics'
ELSE ''
END,
@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, 'bag/window', @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,
CASE t.mm_name
WHEN '도움말 항목' THEN 'bag/help'
WHEN '원격 요청' THEN 'bag/help'
WHEN 'pda 리셋' THEN 'bag/help'
WHEN '번호알기' THEN 'bag/help'
WHEN 'Data Backup' THEN 'bag/help'
WHEN '컴포트 설정' THEN 'bag/help'
WHEN 'Version 정보' THEN 'bag/help'
WHEN '종료' THEN 'bag/help'
WHEN '1GBMS' THEN 'bag/help'
ELSE ''
END,
@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
);