Files
gpf_pet_hospital/backend/target/classes/schema.sql
2026-02-25 13:15:15 +08:00

292 lines
9.2 KiB
SQL

-- 如果表不存在则创建表,如果存在则添加缺失的列
-- 检查并创建appointment表或添加缺失列
CREATE TABLE IF NOT EXISTS appointment (
id BIGINT AUTO_INCREMENT PRIMARY KEY,
customer_id BIGINT NOT NULL,
pet_id BIGINT NOT NULL,
doctor_id BIGINT,
department VARCHAR(50),
appointment_date DATE,
time_slot VARCHAR(20), -- 添加这个缺失的列
status VARCHAR(20) DEFAULT 'PENDING',
remark TEXT,
cancel_time TIMESTAMP NULL,
create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
deleted INT DEFAULT 0
);
-- 检查并创建visit表
CREATE TABLE IF NOT EXISTS visit (
id BIGINT AUTO_INCREMENT PRIMARY KEY,
appointment_id BIGINT,
customer_id BIGINT NOT NULL,
pet_id BIGINT NOT NULL,
doctor_id BIGINT NOT NULL,
symptoms TEXT,
diagnosis TEXT,
treatment_plan TEXT,
status VARCHAR(20) DEFAULT 'PENDING',
total_amount DECIMAL(10,2),
payment_status VARCHAR(20) DEFAULT 'UNPAID',
payment_method VARCHAR(20),
payment_time TIMESTAMP NULL,
start_time TIMESTAMP,
end_time TIMESTAMP,
create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
deleted INT DEFAULT 0
);
-- 检查并创建prescription表
CREATE TABLE IF NOT EXISTS prescription (
id BIGINT AUTO_INCREMENT PRIMARY KEY,
visit_id BIGINT,
doctor_id BIGINT,
customer_id BIGINT,
total_amount DECIMAL(10,2),
status VARCHAR(20) DEFAULT 'DRAFT',
remark TEXT,
create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
deleted INT DEFAULT 0
);
-- 检查并创建prescription_item表
CREATE TABLE IF NOT EXISTS prescription_item (
id BIGINT AUTO_INCREMENT PRIMARY KEY,
prescription_id BIGINT NOT NULL,
drug_id BIGINT NOT NULL,
drug_name VARCHAR(100),
specification VARCHAR(100),
quantity INT NOT NULL,
usage_desc VARCHAR(200),
days INT,
unit_price DECIMAL(10,2),
subtotal DECIMAL(10,2),
dosage VARCHAR(100),
frequency VARCHAR(50),
duration VARCHAR(50),
usage_instructions TEXT,
create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
deleted INT DEFAULT 0
);
-- 检查并创建order_info表
CREATE TABLE IF NOT EXISTS order_info (
id BIGINT AUTO_INCREMENT PRIMARY KEY,
visit_id BIGINT,
customer_id BIGINT NOT NULL,
amount DECIMAL(10,2),
status VARCHAR(20) DEFAULT 'UNPAID',
payment_method VARCHAR(20),
payment_time TIMESTAMP NULL,
remark TEXT,
create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
deleted INT DEFAULT 0
);
-- 检查并创建drug表
CREATE TABLE IF NOT EXISTS drug (
id BIGINT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
category VARCHAR(50),
manufacturer VARCHAR(100),
specification VARCHAR(100),
unit_price DECIMAL(10,2),
stock_quantity INT DEFAULT 0,
stock INT DEFAULT 0,
alert_threshold INT,
purchase_price DECIMAL(10,2),
sale_price DECIMAL(10,2),
approval_number VARCHAR(100),
expiry_date TIMESTAMP NULL,
unit VARCHAR(20),
status INT DEFAULT 1,
create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
deleted INT DEFAULT 0
);
-- 检查并创建pet表
CREATE TABLE IF NOT EXISTS pet (
id BIGINT AUTO_INCREMENT PRIMARY KEY,
owner_id BIGINT NOT NULL,
name VARCHAR(50) NOT NULL,
species VARCHAR(50),
breed VARCHAR(100),
gender VARCHAR(10), -- 修改为VARCHAR以支持MALE/FEMALE
birthday DATE, -- 添加birthday字段
age INT, -- 添加age字段
weight DOUBLE, -- 添加weight字段
photo VARCHAR(255), -- 添加photo字段
remark TEXT, -- 添加remark字段
create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
deleted INT DEFAULT 0
);
-- 为已存在的pet表添加age列
ALTER TABLE pet ADD COLUMN IF NOT EXISTS age INT AFTER birthday;
-- 检查并创建doctor表
CREATE TABLE IF NOT EXISTS doctor (
id BIGINT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50) NOT NULL,
department VARCHAR(50),
title VARCHAR(50),
phone VARCHAR(20),
email VARCHAR(100),
avatar VARCHAR(255),
status INT DEFAULT 1,
create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
deleted INT DEFAULT 0
);
-- 检查并创建user表
CREATE TABLE IF NOT EXISTS `user` (
id BIGINT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(50) NOT NULL UNIQUE,
phone VARCHAR(20),
email VARCHAR(100),
password VARCHAR(255) NOT NULL,
role VARCHAR(20) DEFAULT 'CUSTOMER',
status INT DEFAULT 1,
avatar VARCHAR(255),
create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
deleted INT DEFAULT 0
);
-- 检查并创建medical_record表
CREATE TABLE IF NOT EXISTS medical_record (
id BIGINT AUTO_INCREMENT PRIMARY KEY,
visit_id BIGINT NOT NULL,
chief_complaint TEXT,
present_illness TEXT,
physical_examination TEXT,
examination_results TEXT,
diagnosis TEXT,
treatment_plan TEXT,
advice TEXT,
status VARCHAR(20),
record_type VARCHAR(50), -- CHECKUP体检, DIAGNOSIS诊断, TREATMENT治疗
content TEXT,
attachment_urls TEXT,
doctor_id BIGINT,
create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
deleted INT DEFAULT 0
);
-- 检查并创建message表
CREATE TABLE IF NOT EXISTS message (
id BIGINT AUTO_INCREMENT PRIMARY KEY,
user_id BIGINT,
user_name VARCHAR(100),
contact VARCHAR(100),
title VARCHAR(200),
sender_id BIGINT,
receiver_id BIGINT NOT NULL,
content TEXT NOT NULL,
type VARCHAR(20) DEFAULT 'NOTICE', -- NOTICE通知, CHAT聊天
status VARCHAR(20) DEFAULT 'UNREAD', -- UNREAD未读, READ已读
reply TEXT,
reply_time TIMESTAMP NULL,
reply_user_id BIGINT,
create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
deleted INT DEFAULT 0
);
-- 检查并创建notice表
CREATE TABLE IF NOT EXISTS notice (
id BIGINT AUTO_INCREMENT PRIMARY KEY,
title VARCHAR(200) NOT NULL,
content TEXT NOT NULL,
is_top INT DEFAULT 0,
publisher_id BIGINT NOT NULL,
publish_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
status INT DEFAULT 1,
create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
deleted INT DEFAULT 0
);
-- 检查并创建report表
CREATE TABLE IF NOT EXISTS report (
id BIGINT AUTO_INCREMENT PRIMARY KEY,
visit_id BIGINT,
pet_id BIGINT,
type VARCHAR(50),
title VARCHAR(200),
summary TEXT,
attachment_url VARCHAR(255),
doctor_id BIGINT,
report_type VARCHAR(50) DEFAULT 'DIAGNOSIS', -- REVENUE收入, CUSTOMER客户, PET宠物, DRUG药品, DIAGNOSIS检查报告
report_data JSON,
period_start DATE,
period_end DATE,
generated_by BIGINT,
create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
deleted INT DEFAULT 0
);
-- 为已存在的report表修改report_type默认值
ALTER TABLE report MODIFY COLUMN report_type VARCHAR(50) DEFAULT 'DIAGNOSIS';
-- 检查并创建stock_in表
CREATE TABLE IF NOT EXISTS stock_in (
id BIGINT AUTO_INCREMENT PRIMARY KEY,
drug_id BIGINT NOT NULL,
quantity INT NOT NULL,
unit_price DECIMAL(10,2),
supplier VARCHAR(100),
operator_id BIGINT,
stock_in_time TIMESTAMP NULL,
remark TEXT,
create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
deleted INT DEFAULT 0
);
-- 检查并创建stock_out表
CREATE TABLE IF NOT EXISTS stock_out (
id BIGINT AUTO_INCREMENT PRIMARY KEY,
drug_id BIGINT NOT NULL,
prescription_id BIGINT,
quantity INT NOT NULL,
unit_price DECIMAL(10,2),
purpose VARCHAR(100), -- 用途:销售、损耗等
operator_id BIGINT,
stock_out_time TIMESTAMP NULL,
remark TEXT,
create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
deleted INT DEFAULT 0
);
-- 检查并创建vaccine_record表
CREATE TABLE IF NOT EXISTS vaccine_record (
id BIGINT AUTO_INCREMENT PRIMARY KEY,
pet_id BIGINT NOT NULL,
type VARCHAR(20), -- VACCINE疫苗, DEWORMING驱虫
item_name VARCHAR(100),
execute_date DATE,
next_reminder_date DATE,
vaccine_name VARCHAR(100) NOT NULL,
dose_number INT,
injection_date DATE,
next_appointment_date DATE,
doctor_id BIGINT,
remark TEXT,
create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
deleted INT DEFAULT 0
);