지정판매소 현황·바코드 출력 기능을 전용 화면으로 확장

지정판매소 신규/취소 현황을 사용자 지자체 기준으로 고정 조회하도록 정리하고, 동별 요약과 컬럼 설명 툴팁을 추가했습니다.
또한 지정판매소 바코드 출력 메뉴를 전용 URL로 분리하고 선택 인쇄/출력 레이아웃을 GBMS 형태에 맞춰 구현했습니다.
This commit is contained in:
taekyoungc
2026-04-14 00:14:53 +09:00
parent 72578f200c
commit 734a55833b
13 changed files with 2160 additions and 167 deletions

View File

@@ -0,0 +1,7 @@
-- 기존 DB: '지정판매소 바코드 출력' 메뉴를 전용 URL로 변경
SET NAMES utf8mb4 COLLATE utf8mb4_unicode_ci;
UPDATE `menu` m
INNER JOIN `menu_type` t ON t.mt_idx = m.mt_idx AND t.mt_code = 'site'
SET m.mm_link = 'bag/designated-shops/barcode'
WHERE m.mm_name = '지정판매소 바코드 출력';

View File

@@ -0,0 +1,10 @@
-- 기존 DB: 지정 판매소 신규/취소 현황 메뉴를 GBMS형 전용 URL로 변경
-- UTF-8: mysql --default-character-set=utf8mb4 ...
SET NAMES utf8mb4 COLLATE utf8mb4_unicode_ci;
UPDATE `menu` m
INNER JOIN `menu_type` t ON t.mt_idx = m.mt_idx AND t.mt_code = 'site'
SET m.mm_link = 'bag/designated-shops/district-new-cancel'
WHERE m.mm_name IN ('지정 판매소 신규/취소 현황', '지정 판매소 현황')
AND m.mm_link IN ('bag/designated-shops/status', '');

View File

@@ -19,12 +19,12 @@ SET m.mm_link = CASE m.mm_name
WHEN '업체 관리' THEN 'bag/companies'
WHEN '무료용 대상자 관리' THEN 'bag/free-recipients'
WHEN '지정 판매소 관리' THEN 'bag/designated-shops'
WHEN '지정 판매소 조회' THEN 'bag/designated-shops'
WHEN '지정 판매소 신규/취소 현황' THEN 'bag/designated-shops/status'
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/status'
WHEN '지정 판매소 현황' THEN 'bag/designated-shops/district-new-cancel'
WHEN '발주 등록' THEN 'bag/order/create'
WHEN '발주 변경' THEN 'bag/bag-orders'
WHEN '발주 현황' THEN 'bag/bag-orders'

View File

@@ -33,12 +33,12 @@ SELECT @mt_site, 1, t.mm_name,
WHEN '업체 관리' THEN 'bag/companies'
WHEN '무료용 대상자 관리' THEN 'bag/free-recipients'
WHEN '지정 판매소 관리' THEN 'bag/designated-shops'
WHEN '지정 판매소 조회' THEN 'bag/designated-shops'
WHEN '지정 판매소 신규/취소 현황' THEN 'bag/designated-shops/status'
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/status'
WHEN '지정 판매소 현황' THEN 'bag/designated-shops/district-new-cancel'
ELSE ''
END,
@parent_basic, 1, t.mm_num, 0, '', 'Y'

View File

@@ -0,0 +1,64 @@
-- 지정판매소 신규/취소 현황(연도별) 테스트 데이터
-- 목적: district-new-cancel/status 화면에서 2022~2025 연도 전환 테스트
-- 기본값: ds_lg_idx=1, ds_gugun_code=110209(북구). 환경에 맞게 값 변경 후 실행하세요.
-- 실행 예:
-- mysql -h 127.0.0.1 -u jongryangje -p jongryangje_dev < writable/database/seed_designated_shops_status_multi_years.sql
SET NAMES utf8mb4;
-- 재실행 가능하도록 테스트 prefix 데이터만 정리
DELETE FROM `designated_shop` WHERE `ds_shop_no` LIKE 'ZZSTAT-%';
INSERT INTO `designated_shop` (
`ds_lg_idx`, `ds_mb_idx`, `ds_shop_no`, `ds_name`, `ds_biz_no`, `ds_rep_name`,
`ds_va_number`, `ds_zip`, `ds_addr`, `ds_addr_jibun`, `ds_addr_detail`,
`ds_tel`, `ds_rep_phone`, `ds_email`,
`ds_gugun_code`, `ds_zone_code`,
`ds_designated_at`, `ds_state`, `ds_state_changed_at`, `ds_change_reason`, `ds_regdate`
) VALUES
-- 2022 지정 2건
(1, NULL, 'ZZSTAT-2201', '현황테스트 A', '901-22-00001', '홍길동', '', '41590', '대구광역시 북구 테스트로 2201', '대구 북구 테스트동 2201', '101호', '053-220-0001', '01022000001', 'zzstat2201@test.local', '110209', '북구-A', '2022-03-01', 1, NULL, '', '2022-03-01 09:00:00'),
(1, NULL, 'ZZSTAT-2202', '현황테스트 J', '901-22-00002', '김현황', '', '41590', '대구광역시 북구 테스트로 2202', '대구 북구 테스트동 2202', '102호', '053-220-0002', '01022000002', 'zzstat2202@test.local', '110209', '북구-A', '2022-08-08', 2, '2023-12-20', '테스트 취소(2023)', '2022-08-08 09:00:00'),
-- 2023 지정 2건 (이 중 1건은 2024에 취소)
(1, NULL, 'ZZSTAT-2301', '현황테스트 B', '901-23-00001', '이현황', '', '41590', '대구광역시 북구 테스트로 2301', '대구 북구 테스트동 2301', '201호', '053-230-0001', '01023000001', 'zzstat2301@test.local', '110209', '북구-B', '2023-04-10', 1, NULL, '', '2023-04-10 09:00:00'),
(1, NULL, 'ZZSTAT-2302', '현황테스트 C', '901-23-00002', '박현황', '', '41590', '대구광역시 북구 테스트로 2302', '대구 북구 테스트동 2302', '202호', '053-230-0002', '01023000002', 'zzstat2302@test.local', '110209', '북구-B', '2023-07-01', 2, '2024-05-02', '테스트 취소(2024)', '2023-07-01 09:00:00'),
-- 2024 지정 4건 (이 중 1건은 2024에 취소)
(1, NULL, 'ZZSTAT-2401', '현황테스트 D', '901-24-00001', '최현황', '', '41590', '대구광역시 북구 테스트로 2401', '대구 북구 테스트동 2401', '301호', '053-240-0001', '01024000001', 'zzstat2401@test.local', '110209', '북구-C', '2024-01-15', 1, NULL, '', '2024-01-15 09:00:00'),
(1, NULL, 'ZZSTAT-2402', '현황테스트 E', '901-24-00002', '정현황', '', '41590', '대구광역시 북구 테스트로 2402', '대구 북구 테스트동 2402', '302호', '053-240-0002', '01024000002', 'zzstat2402@test.local', '110209', '북구-C', '2024-06-20', 1, NULL, '', '2024-06-20 09:00:00'),
(1, NULL, 'ZZSTAT-2403', '현황테스트 F', '901-24-00003', '강현황', '', '41590', '대구광역시 북구 테스트로 2403', '대구 북구 테스트동 2403', '303호', '053-240-0003', '01024000003', 'zzstat2403@test.local', '110209', '북구-D', '2024-09-01', 3, '2024-12-01', '테스트 해지(2024)', '2024-09-01 09:00:00'),
(1, NULL, 'ZZSTAT-2404', '현황테스트 G', '901-24-00004', '신현황', '', '41590', '대구광역시 북구 테스트로 2404', '대구 북구 테스트동 2404', '304호', '053-240-0004', '01024000004', 'zzstat2404@test.local', '110209', '북구-D', '2024-11-12', 1, NULL, '', '2024-11-12 09:00:00'),
-- 2025 지정 2건 (이 중 1건은 2025에 취소)
(1, NULL, 'ZZSTAT-2501', '현황테스트 H', '901-25-00001', '오현황', '', '41590', '대구광역시 북구 테스트로 2501', '대구 북구 테스트동 2501', '401호', '053-250-0001', '01025000001', 'zzstat2501@test.local', '110209', '북구-E', '2025-02-01', 1, NULL, '', '2025-02-01 09:00:00'),
(1, NULL, 'ZZSTAT-2502', '현황테스트 I', '901-25-00002', '유현황', '', '41590', '대구광역시 북구 테스트로 2502', '대구 북구 테스트동 2502', '402호', '053-250-0002', '01025000002', 'zzstat2502@test.local', '110209', '북구-E', '2025-03-20', 2, '2025-10-15', '테스트 취소(2025)', '2025-03-20 09:00:00');
-- 참고: 추가된 "지정" 건수(연도별)
-- 2022: 2건 / 2023: 2건 / 2024: 4건 / 2025: 2건
-- 검증 1) prefix 데이터의 연도별 지정/취소 건수
-- SELECT
-- YEAR(ds_designated_at) AS yr,
-- COUNT(*) AS designated_cnt,
-- SUM(CASE WHEN ds_state IN (2,3) AND ds_state_changed_at IS NOT NULL THEN YEAR(ds_state_changed_at)=YEAR(ds_designated_at) ELSE 0 END) AS same_year_cancel_cnt
-- FROM designated_shop
-- WHERE ds_shop_no LIKE 'ZZSTAT-%'
-- GROUP BY YEAR(ds_designated_at)
-- ORDER BY yr;
-- 검증 2) 2024 현황 기대값(prefix 데이터만)
-- 종전(2023말)=3, 지정(2024)=4, 취소(2024)=2, 현행(2024말)=5
-- SELECT
-- SUM(CASE
-- WHEN COALESCE(ds_designated_at, DATE(ds_regdate)) <= '2023-12-31'
-- AND (ds_state = 1 OR (ds_state IN (2,3) AND COALESCE(ds_state_changed_at, DATE(ds_regdate)) > '2023-12-31'))
-- THEN 1 ELSE 0 END) AS prev_end_2023,
-- SUM(CASE WHEN YEAR(COALESCE(ds_designated_at, DATE(ds_regdate))) = 2024 THEN 1 ELSE 0 END) AS designated_2024,
-- SUM(CASE WHEN ds_state IN (2,3) AND YEAR(COALESCE(ds_state_changed_at, DATE(ds_regdate))) = 2024 THEN 1 ELSE 0 END) AS cancelled_2024,
-- SUM(CASE
-- WHEN COALESCE(ds_designated_at, DATE(ds_regdate)) <= '2024-12-31'
-- AND (ds_state = 1 OR (ds_state IN (2,3) AND COALESCE(ds_state_changed_at, DATE(ds_regdate)) > '2024-12-31'))
-- THEN 1 ELSE 0 END) AS curr_end_2024
-- FROM designated_shop
-- WHERE ds_shop_no LIKE 'ZZSTAT-%';