#!/usr/bin/env bash # scripts/seed-dev-data.sh — Populate dev/test DB with realistic-looking # print-industry data covering everything wired in the frontend. # # Idempotent: every INSERT uses IGNORE on a unique key so repeated runs # won't duplicate rows. Safe to re-run after any code change. # # Prerequisites: # 1. .env.local with DB_HOST/DB_PORT/DB_SCHEMA/DB_USER/DB_PASSWORD # 2. Schema must exist — i.e. Spring Boot has started at least once so # Flyway has applied V1 (creates tUser/tStaff/tPermissionCategory/ # tUserPermission/tModule). # # What it seeds: # tStaff — 20 employees with name, dept, staff number # tUser — admin + 18 users, BCrypt(666666), linked to staff # tPermissionCategory — 30 permission groups matching prototype's grid # tUserPermission — common permissions assigned to non-admin users # tModule — 6 root flows + 24 leaf modules (KPI tree + 系统设置) set -euo pipefail for p in /opt/homebrew/opt/mysql-client/bin /usr/local/opt/mysql-client/bin; do [ -d "$p" ] && case ":$PATH:" in *":$p:"*) ;; *) PATH="$p:$PATH" ;; esac done ENV_FILE="$(dirname "$0")/../.env.local" [ -f "$ENV_FILE" ] || { echo "[seed-dev-data] ⚠️ .env.local 不存在($ENV_FILE)" >&2; exit 1; } set -a; . "$ENV_FILE"; set +a # BCrypt(666666) cost 10. Spring's BCryptPasswordEncoder accepts $2a$/$2b$. HASH='$2b$10$ZzbGP0yWo3QJkaiZqEgtAOQVrzrti911VqbY7FoethhGQFPV0/Oj6' echo "[seed-dev-data] target: ${DB_USER}@${DB_HOST}:${DB_PORT}/${DB_SCHEMA}" mysql -h"${DB_HOST}" -P"${DB_PORT}" -u"${DB_USER}" -p"${DB_PASSWORD}" "${DB_SCHEMA}" <客户确认', (SELECT iIncrement FROM (SELECT iIncrement FROM tModule WHERE sProcedureName='Sp_QuoteFlow') AS x),2,'admin',0), ('XLY','XLY','2024-01-10 08:00:00','前端业务','Sp_QuoteCustConfirm','单据','Pricing',1,'03/04 客户确认->二次确认', (SELECT iIncrement FROM (SELECT iIncrement FROM tModule WHERE sProcedureName='Sp_QuoteFlow') AS x),3,'admin',0), ('XLY','XLY','2024-01-10 08:00:00','前端业务','Sp_QuoteToOrder','单据','Pricing',1,'04/04 报价单->销售订单', (SELECT iIncrement FROM (SELECT iIncrement FROM tModule WHERE sProcedureName='Sp_QuoteFlow') AS x),4,'admin',0), ('XLY','XLY','2024-01-10 08:00:00','前端业务','Sp_QuoteToImpose','单据','Pricing',1,'04/04 报价单->转拼版单', (SELECT iIncrement FROM (SELECT iIncrement FROM tModule WHERE sProcedureName='Sp_QuoteFlow') AS x),5,'admin',0), ('XLY','XLY','2024-01-10 08:00:00','前端业务','Sp_QuoteSupervisorAudit','单据','Pricing',1,'04/07 主管审核报价单', (SELECT iIncrement FROM (SELECT iIncrement FROM tModule WHERE sProcedureName='Sp_QuoteFlow') AS x),6,'admin',0), ('XLY','XLY','2024-01-10 08:00:00','前端业务','Sp_QuoteSalesConfirm','单据','Pricing',1,'05/07 业务确认报价单', (SELECT iIncrement FROM (SELECT iIncrement FROM tModule WHERE sProcedureName='Sp_QuoteFlow') AS x),7,'admin',0); -- 2. 订单生产流程 INSERT IGNORE INTO tModule (sBrandsId,sSubsidiaryId,tCreateDate,sDisplayType,sProcedureName,sModuleType,sManageDeptEn,bShowPermission,sModuleNameZh,iParentId,iSortOrder,sCreatedBy,bDeleted) VALUES ('XLY','XLY','2024-01-10 08:00:00','前端业务','Sp_OrderFlow','KPI流程','Production',1,'订单生产流程',NULL,2,'admin',0); INSERT IGNORE INTO tModule (sBrandsId,sSubsidiaryId,tCreateDate,sDisplayType,sProcedureName,sModuleType,sManageDeptEn,bShowPermission,sModuleNameZh,iParentId,iSortOrder,sCreatedBy,bDeleted) VALUES ('XLY','XLY','2024-01-10 08:00:00','前端业务','Sp_OrderCreate','单据','Production',1,'01/03 销售订单->生产任务单', (SELECT iIncrement FROM (SELECT iIncrement FROM tModule WHERE sProcedureName='Sp_OrderFlow') AS x),1,'admin',0), ('XLY','XLY','2024-01-10 08:00:00','前端业务','Sp_OrderDispatch','单据','Production',1,'02/03 任务单分派', (SELECT iIncrement FROM (SELECT iIncrement FROM tModule WHERE sProcedureName='Sp_OrderFlow') AS x),2,'admin',0), ('XLY','XLY','2024-01-10 08:00:00','前端业务','Sp_OrderComplete','单据','Production',1,'03/03 任务单完成', (SELECT iIncrement FROM (SELECT iIncrement FROM tModule WHERE sProcedureName='Sp_OrderFlow') AS x),3,'admin',0); -- 3. 自动拼版流程 INSERT IGNORE INTO tModule (sBrandsId,sSubsidiaryId,tCreateDate,sDisplayType,sProcedureName,sModuleType,sManageDeptEn,bShowPermission,sModuleNameZh,iParentId,iSortOrder,sCreatedBy,bDeleted) VALUES ('XLY','XLY','2024-01-10 08:00:00','前端业务','Sp_PanelFlow','KPI流程','Imposition',1,'自动拼版流程',NULL,3,'admin',0); INSERT IGNORE INTO tModule (sBrandsId,sSubsidiaryId,tCreateDate,sDisplayType,sProcedureName,sModuleType,sManageDeptEn,bShowPermission,sModuleNameZh,iParentId,iSortOrder,sCreatedBy,bDeleted) VALUES ('XLY','XLY','2024-01-10 08:00:00','前端业务','Sp_PanelCreate','单据','Imposition',1,'01/02 拼版任务生成', (SELECT iIncrement FROM (SELECT iIncrement FROM tModule WHERE sProcedureName='Sp_PanelFlow') AS x),1,'admin',0), ('XLY','XLY','2024-01-10 08:00:00','前端业务','Sp_PanelAudit','单据','Imposition',1,'02/02 拼版审核', (SELECT iIncrement FROM (SELECT iIncrement FROM tModule WHERE sProcedureName='Sp_PanelFlow') AS x),2,'admin',0); -- 4. 销售送货流程 INSERT IGNORE INTO tModule (sBrandsId,sSubsidiaryId,tCreateDate,sDisplayType,sProcedureName,sModuleType,sManageDeptEn,bShowPermission,sModuleNameZh,iParentId,iSortOrder,sCreatedBy,bDeleted) VALUES ('XLY','XLY','2024-01-10 08:00:00','前端业务','Sp_ShipFlow','KPI流程','Logistics',1,'销售送货流程',NULL,4,'admin',0); INSERT IGNORE INTO tModule (sBrandsId,sSubsidiaryId,tCreateDate,sDisplayType,sProcedureName,sModuleType,sManageDeptEn,bShowPermission,sModuleNameZh,iParentId,iSortOrder,sCreatedBy,bDeleted) VALUES ('XLY','XLY','2024-01-10 08:00:00','前端业务','Sp_ShipCreate','单据','Logistics',1,'01/02 发货单创建', (SELECT iIncrement FROM (SELECT iIncrement FROM tModule WHERE sProcedureName='Sp_ShipFlow') AS x),1,'admin',0), ('XLY','XLY','2024-01-10 08:00:00','前端业务','Sp_ShipConfirm','单据','Logistics',1,'02/02 签收确认', (SELECT iIncrement FROM (SELECT iIncrement FROM tModule WHERE sProcedureName='Sp_ShipFlow') AS x),2,'admin',0); -- 5. 物料采购流程 INSERT IGNORE INTO tModule (sBrandsId,sSubsidiaryId,tCreateDate,sDisplayType,sProcedureName,sModuleType,sManageDeptEn,bShowPermission,sModuleNameZh,iParentId,iSortOrder,sCreatedBy,bDeleted) VALUES ('XLY','XLY','2024-01-10 08:00:00','前端业务','Sp_PurchFlow','KPI流程','Purchasing',1,'物料采购流程',NULL,5,'admin',0); INSERT IGNORE INTO tModule (sBrandsId,sSubsidiaryId,tCreateDate,sDisplayType,sProcedureName,sModuleType,sManageDeptEn,bShowPermission,sModuleNameZh,iParentId,iSortOrder,sCreatedBy,bDeleted) VALUES ('XLY','XLY','2024-01-10 08:00:00','前端业务','Sp_PurchRequest','单据','Purchasing',1,'01/03 采购申请', (SELECT iIncrement FROM (SELECT iIncrement FROM tModule WHERE sProcedureName='Sp_PurchFlow') AS x),1,'admin',0), ('XLY','XLY','2024-01-10 08:00:00','前端业务','Sp_PurchOrder','单据','Purchasing',1,'02/03 采购订单', (SELECT iIncrement FROM (SELECT iIncrement FROM tModule WHERE sProcedureName='Sp_PurchFlow') AS x),2,'admin',0), ('XLY','XLY','2024-01-10 08:00:00','前端业务','Sp_PurchReceive','单据','Purchasing',1,'03/03 入库确认', (SELECT iIncrement FROM (SELECT iIncrement FROM tModule WHERE sProcedureName='Sp_PurchFlow') AS x),3,'admin',0); -- 6. 系统设置 INSERT IGNORE INTO tModule (sBrandsId,sSubsidiaryId,tCreateDate,sDisplayType,sProcedureName,sModuleType,sManageDeptEn,bShowPermission,sModuleNameZh,iParentId,iSortOrder,sCreatedBy,bDeleted) VALUES ('XLY','XLY','2024-01-10 08:00:00','系统配置','Sp_SysFlow','系统','SysAdmin',0,'系统设置',NULL,99,'admin',0); INSERT IGNORE INTO tModule (sBrandsId,sSubsidiaryId,tCreateDate,sDisplayType,sProcedureName,sModuleType,sManageDeptEn,bShowPermission,sModuleNameZh,iParentId,iSortOrder,sCreatedBy,bDeleted) VALUES ('XLY','XLY','2024-01-10 08:00:00','系统配置','Sp_SysUserList','单据','SysAdmin',0,'用户列表', (SELECT iIncrement FROM (SELECT iIncrement FROM tModule WHERE sProcedureName='Sp_SysFlow') AS x),1,'admin',0), ('XLY','XLY','2024-01-10 08:00:00','系统配置','Sp_SysModuleConfig','单据','SysAdmin',0,'系统模块配置', (SELECT iIncrement FROM (SELECT iIncrement FROM tModule WHERE sProcedureName='Sp_SysFlow') AS x),2,'admin',0), ('XLY','XLY','2024-01-10 08:00:00','系统配置','Sp_SysRole','单据','SysAdmin',0,'角色管理', (SELECT iIncrement FROM (SELECT iIncrement FROM tModule WHERE sProcedureName='Sp_SysFlow') AS x),3,'admin',0), ('XLY','XLY','2024-01-10 08:00:00','系统配置','Sp_SysMenu','单据','SysAdmin',0,'菜单配置', (SELECT iIncrement FROM (SELECT iIncrement FROM tModule WHERE sProcedureName='Sp_SysFlow') AS x),4,'admin',0), ('XLY','XLY','2024-01-10 08:00:00','系统配置','Sp_SysLog','单据','SysAdmin',0,'操作日志', (SELECT iIncrement FROM (SELECT iIncrement FROM tModule WHERE sProcedureName='Sp_SysFlow') AS x),5,'admin',0); SELECT (SELECT COUNT(*) FROM tStaff) AS staff_rows, (SELECT COUNT(*) FROM tUser) AS user_rows, (SELECT COUNT(*) FROM tPermissionCategory) AS perm_cat_rows, (SELECT COUNT(*) FROM tUserPermission) AS user_perm_rows, (SELECT COUNT(*) FROM tModule) AS module_rows; SQL echo "[seed-dev-data] OK"