You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

291 lines
16 KiB

from tortoise import BaseDBAsyncClient
async def upgrade(db: BaseDBAsyncClient) -> str:
return """
CREATE TABLE IF NOT EXISTS `aerich` (
`id` INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
`version` VARCHAR(255) NOT NULL,
`app` VARCHAR(100) NOT NULL,
`content` JSON NOT NULL
) CHARACTER SET utf8mb4;
CREATE TABLE IF NOT EXISTS `Agvs` (
`id` CHAR(36) NOT NULL PRIMARY KEY,
`num` VARCHAR(255) COMMENT '短编号',
`agvid` VARCHAR(255) COMMENT 'AGV小车编号',
`percent` DECIMAL(3,2) NOT NULL COMMENT '小车电量' DEFAULT 1,
`records` JSON COMMENT '记录列表',
`curorder` VARCHAR(255) COMMENT '当前订单号',
`curstop` VARCHAR(255) COMMENT '当前站点',
`curitinerary` JSON COMMENT '订单对应的全局最短路径',
`is_charging` BOOL NOT NULL COMMENT '充电中' DEFAULT 0,
`is_busy` BOOL NOT NULL COMMENT '设备忙' DEFAULT 0,
`is_abnormal` BOOL NOT NULL COMMENT '是否异常' DEFAULT 0,
`abnormal_time` DATETIME(6) COMMENT '异常时间',
`is_done` BOOL NOT NULL COMMENT '是否完成' DEFAULT 0,
`created_at` DATETIME(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6),
`updated_at` DATETIME(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6),
`is_valid` BOOL NOT NULL COMMENT '是否有效' DEFAULT 1,
`is_active` BOOL NOT NULL COMMENT '是否删除' DEFAULT 1
) CHARACTER SET utf8mb4 COMMENT='AGV管理表';
CREATE INDEX `num` ON `Agvs` (`num`);
CREATE INDEX `agvid` ON `Agvs` (`agvid`);
CREATE INDEX `agvs_is_busy` ON `Agvs` (`is_busy`);
CREATE INDEX `agvs_is_abnormal` ON `Agvs` (`is_abnormal`);
CREATE INDEX `agvs_is_done` ON `Agvs` (`is_done`);
CREATE INDEX `agvs_is_charging` ON `Agvs` (`is_charging`);
CREATE INDEX `is_valididx` ON `Agvs` (`is_valid`);
CREATE INDEX `is_activeidx` ON `Agvs` (`is_active`);
CREATE TABLE IF NOT EXISTS `Connections` (
`id` CHAR(36) NOT NULL PRIMARY KEY,
`num` VARCHAR(255) COMMENT '短编号',
`name` VARCHAR(255) COMMENT '接驳台编号',
`memo` JSON COMMENT '备忘录',
`created_at` DATETIME(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6),
`updated_at` DATETIME(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6),
`is_valid` BOOL NOT NULL COMMENT '是否取消' DEFAULT 1,
`is_active` BOOL NOT NULL COMMENT '是否删除' DEFAULT 1
) CHARACTER SET utf8mb4 COMMENT='暂存货架库存表';
CREATE INDEX `nameidx` ON `Connections` (`name`);
CREATE INDEX `numidx` ON `Connections` (`num`);
CREATE INDEX `is_valididx` ON `Connections` (`is_valid`);
CREATE INDEX `is_activeidx` ON `Connections` (`is_active`);
CREATE TABLE IF NOT EXISTS `Schelves` (
`id` CHAR(36) NOT NULL PRIMARY KEY,
`num` VARCHAR(255) COMMENT '短编号',
`name` VARCHAR(255) COMMENT '暂存货架编号',
`memo` JSON COMMENT '备忘录',
`created_at` DATETIME(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6),
`updated_at` DATETIME(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6),
`is_valid` BOOL NOT NULL COMMENT '是否取消' DEFAULT 1,
`is_active` BOOL NOT NULL COMMENT '是否删除' DEFAULT 1
) CHARACTER SET utf8mb4 COMMENT='暂存货架库存表';
CREATE INDEX `nameidx` ON `Schelves` (`name`);
CREATE INDEX `numidx` ON `Schelves` (`num`);
CREATE INDEX `is_valididx` ON `Schelves` (`is_valid`);
CREATE INDEX `is_activeidx` ON `Schelves` (`is_active`);
CREATE TABLE IF NOT EXISTS `users` (
`id` CHAR(36) NOT NULL PRIMARY KEY,
`username` VARCHAR(255) NOT NULL COMMENT '账号',
`name` VARCHAR(255) NOT NULL COMMENT '姓名',
`phone` VARCHAR(11) COMMENT '手机号',
`email` VARCHAR(255) COMMENT '邮箱',
`created_at` DATETIME(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6),
`updated_at` DATETIME(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6),
`tag` VARCHAR(255) COMMENT '标签',
`level` INT NOT NULL COMMENT '账号等级' DEFAULT 1,
`is_admin` BOOL NOT NULL COMMENT '管理员账号' DEFAULT 0,
`is_staff` BOOL NOT NULL COMMENT '员工账号' DEFAULT 0,
`is_locked` BOOL NOT NULL COMMENT '是否锁定' DEFAULT 0,
`is_valid` BOOL NOT NULL COMMENT '是否有效' DEFAULT 0,
`is_active` BOOL NOT NULL COMMENT '是否删除' DEFAULT 0
) CHARACTER SET utf8mb4 COMMENT='用户表';
CREATE INDEX `usernameidx` ON `users` (`username`);
CREATE INDEX `nameidx` ON `users` (`name`);
CREATE INDEX `phoneidx` ON `users` (`phone`);
CREATE INDEX `emailidx` ON `users` (`email`);
CREATE INDEX `is_adminidx` ON `users` (`is_admin`);
CREATE INDEX `is_staffidx` ON `users` (`is_staff`);
CREATE INDEX `is_lockedidx` ON `users` (`is_locked`);
CREATE INDEX `is_valididx` ON `users` (`is_valid`);
CREATE INDEX `is_activeidx` ON `users` (`is_active`);
CREATE TABLE IF NOT EXISTS `Assignments` (
`id` CHAR(36) NOT NULL PRIMARY KEY,
`num` VARCHAR(255) COMMENT '短编号',
`orderid` VARCHAR(255) COMMENT '中控系统订单编号',
`sequence` INT NOT NULL COMMENT '管理员手动排序号' DEFAULT 0,
`ordertime` DATETIME(6) COMMENT '预约领用时间',
`agvid` VARCHAR(255) COMMENT 'AGV小车编号',
`itinerary` JSON COMMENT '订单对应的全局最短路径',
`cmd` JSON COMMENT '下发给AGV的任务序列',
`last` VARCHAR(255) COMMENT '最后上车的仓库编号',
`loada` INT NOT NULL COMMENT 'A类型装载数量' DEFAULT 0,
`loadb` INT NOT NULL COMMENT 'B类型装载数量' DEFAULT 0,
`loadc` INT NOT NULL COMMENT 'C类型装载数量' DEFAULT 0,
`loadd` INT NOT NULL COMMENT 'D类型装载数量' DEFAULT 0,
`loade` INT NOT NULL COMMENT 'E类型装载数量' DEFAULT 0,
`is_canceled` BOOL NOT NULL COMMENT '是否取消' DEFAULT 0,
`cancel_time` DATETIME(6) COMMENT '取消时间',
`is_processing` BOOL NOT NULL COMMENT '是否进行中' DEFAULT 0,
`is_failed` BOOL NOT NULL COMMENT '是否失败' DEFAULT 0,
`is_done` BOOL NOT NULL COMMENT '是否完成' DEFAULT 0,
`created_at` DATETIME(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6),
`updated_at` DATETIME(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6),
`is_valid` BOOL NOT NULL COMMENT '是否有效' DEFAULT 1,
`is_active` BOOL NOT NULL COMMENT '是否删除' DEFAULT 1,
`owner_id` CHAR(36) COMMENT '订单所有人',
CONSTRAINT `fk_Assignme_users_a5ea4274` FOREIGN KEY (`owner_id`) REFERENCES `users` (`id`) ON DELETE CASCADE
) CHARACTER SET utf8mb4 COMMENT='任务安排表';
CREATE INDEX `num` ON `Assignments` (`num`);
CREATE INDEX `agvid` ON `Assignments` (`agvid`);
CREATE INDEX `orderididx` ON `Assignments` (`orderid`);
CREATE INDEX `assignment_is_doneidx` ON `Assignments` (`is_done`);
CREATE INDEX `assignment_is_canceledidx` ON `Assignments` (`is_canceled`);
CREATE INDEX `is_processingidx` ON `Assignments` (`is_processing`);
CREATE INDEX `is_failedidx` ON `Assignments` (`is_failed`);
CREATE INDEX `is_valididx` ON `Assignments` (`is_valid`);
CREATE INDEX `is_activeidx` ON `Assignments` (`is_active`);
CREATE TABLE IF NOT EXISTS `Orders` (
`id` CHAR(36) NOT NULL PRIMARY KEY,
`num` VARCHAR(255) COMMENT '短编号',
`sequence` INT NOT NULL COMMENT '管理员手动排序号' DEFAULT 0,
`orderid` VARCHAR(255) COMMENT '中控系统订单编号',
`ordertime` DATETIME(6) COMMENT '预约领用时间',
`is_canceled` BOOL NOT NULL COMMENT '是否取消' DEFAULT 0,
`cancel_time` DATETIME(6) COMMENT '取消时间',
`is_failed` BOOL NOT NULL COMMENT '是否失败' DEFAULT 0,
`is_done` BOOL NOT NULL COMMENT '是否完成' DEFAULT 0,
`is_finish` BOOL NOT NULL COMMENT '是否关单' DEFAULT 0,
`created_at` DATETIME(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6),
`updated_at` DATETIME(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6),
`is_valid` BOOL NOT NULL COMMENT '是否有效' DEFAULT 1,
`is_active` BOOL NOT NULL COMMENT '是否删除' DEFAULT 1,
`owner_id` CHAR(36) COMMENT '订单所有人',
CONSTRAINT `fk_Orders_users_f7640be8` FOREIGN KEY (`owner_id`) REFERENCES `users` (`id`) ON DELETE CASCADE
) CHARACTER SET utf8mb4 COMMENT='订单表';
CREATE INDEX `numidx` ON `Orders` (`num`);
CREATE INDEX `orderididx` ON `Orders` (`orderid`);
CREATE INDEX `order_ordertimeidx` ON `Orders` (`ordertime`);
CREATE INDEX `order_is_canceledidx` ON `Orders` (`is_canceled`);
CREATE INDEX `is_doneidx` ON `Orders` (`is_done`);
CREATE INDEX `is_finishidx` ON `Orders` (`is_finish`);
CREATE INDEX `is_failedidx` ON `Orders` (`is_failed`);
CREATE INDEX `is_valididx` ON `Orders` (`is_valid`);
CREATE INDEX `is_activeidx` ON `Orders` (`is_active`);
CREATE TABLE IF NOT EXISTS `Subtasks` (
`id` CHAR(36) NOT NULL PRIMARY KEY,
`num` VARCHAR(255) COMMENT '短编号',
`orderid` VARCHAR(255) COMMENT '中控系统订单编号',
`sequence` INT NOT NULL COMMENT '管理员手动排序号' DEFAULT 0,
`action` INT NOT NULL COMMENT '1: 归还, 3: 预约领用, 5: 现场领用' DEFAULT 0,
`ordertime` DATETIME(6) COMMENT '预约领用时间',
`name` VARCHAR(255) COMMENT '试剂名称',
`typetask` INT NOT NULL COMMENT '1: 标准品A, 3: 标准品B, 5: 标准品C, 7: 标准品D, 9:非标准品' DEFAULT 1,
`quantity` INT NOT NULL COMMENT '试剂数量' DEFAULT 0,
`coordinates` VARCHAR(255) COMMENT '仓库编号',
`traynum` VARCHAR(255) COMMENT '托盘编号',
`is_canceled` BOOL NOT NULL COMMENT '是否取消' DEFAULT 0,
`cancel_time` DATETIME(6) COMMENT '取消时间',
`is_done` BOOL NOT NULL COMMENT '是否完成' DEFAULT 0,
`created_at` DATETIME(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6),
`updated_at` DATETIME(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6),
`is_valid` BOOL NOT NULL COMMENT '是否有效' DEFAULT 1,
`is_active` BOOL NOT NULL COMMENT '是否删除' DEFAULT 1,
`owner_id` CHAR(36) COMMENT '订单所有人',
CONSTRAINT `fk_Subtasks_users_d7bbd97e` FOREIGN KEY (`owner_id`) REFERENCES `users` (`id`) ON DELETE CASCADE
) CHARACTER SET utf8mb4 COMMENT='子任务表';
CREATE INDEX `numidx` ON `Subtasks` (`num`);
CREATE INDEX `orderididx` ON `Subtasks` (`orderid`);
CREATE INDEX `subtask_ordertimeidx` ON `Subtasks` (`ordertime`);
CREATE INDEX `subtask_is_canceledidx` ON `Subtasks` (`is_canceled`);
CREATE INDEX `subtask_is_doneidx` ON `Subtasks` (`is_done`);
CREATE INDEX `subtask_coordinatesidx` ON `Subtasks` (`coordinates`);
CREATE INDEX `subtask_traynumidx` ON `Subtasks` (`traynum`);
CREATE INDEX `is_valididx` ON `Subtasks` (`is_valid`);
CREATE INDEX `is_activeidx` ON `Subtasks` (`is_active`);
CREATE TABLE IF NOT EXISTS `Tasks` (
`id` CHAR(36) NOT NULL PRIMARY KEY,
`num` VARCHAR(255) COMMENT '短编号',
`orderid` VARCHAR(255) COMMENT '中控系统订单编号',
`sequence` INT NOT NULL COMMENT '管理员手动排序号' DEFAULT 0,
`action` INT NOT NULL COMMENT '1: 归还, 3: 预约领用, 5: 现场领用' DEFAULT 0,
`ordertime` DATETIME(6) COMMENT '预约领用时间',
`name` VARCHAR(255) COMMENT '试剂名称',
`typetask` INT NOT NULL COMMENT '1: 标准品A, 3: 标准品B, 5: 标准品C, 7: 标准品D, 9:非准品' DEFAULT 1,
`quantity` INT NOT NULL COMMENT '试剂数量' DEFAULT 0,
`coordinates` VARCHAR(255) COMMENT '仓库编号',
`traynum` VARCHAR(255) COMMENT '托盘编号',
`is_canceled` BOOL NOT NULL COMMENT '是否取消' DEFAULT 0,
`cancel_time` DATETIME(6) COMMENT '取消时间',
`is_done` BOOL NOT NULL COMMENT '是否完成' DEFAULT 0,
`created_at` DATETIME(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6),
`updated_at` DATETIME(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6),
`is_valid` BOOL NOT NULL COMMENT '是否有效' DEFAULT 1,
`is_active` BOOL NOT NULL COMMENT '是否删除' DEFAULT 1,
`owner_id` CHAR(36) COMMENT '订单所有人',
CONSTRAINT `fk_Tasks_users_ce59de8c` FOREIGN KEY (`owner_id`) REFERENCES `users` (`id`) ON DELETE CASCADE
) CHARACTER SET utf8mb4 COMMENT='任务表';
CREATE INDEX `numidx` ON `Tasks` (`num`);
CREATE INDEX `orderididx` ON `Tasks` (`orderid`);
CREATE INDEX `task_ordertimeidx` ON `Tasks` (`ordertime`);
CREATE INDEX `task_is_canceledidx` ON `Tasks` (`is_canceled`);
CREATE INDEX `task_is_doneidx` ON `Tasks` (`is_done`);
CREATE INDEX `task_coordinatesidx` ON `Tasks` (`coordinates`);
CREATE INDEX `task_traynumidx` ON `Tasks` (`traynum`);
CREATE INDEX `is_valididx` ON `Tasks` (`is_valid`);
CREATE INDEX `is_activeidx` ON `Tasks` (`is_active`);
CREATE TABLE IF NOT EXISTS `Vacancys` (
`id` CHAR(36) NOT NULL PRIMARY KEY,
`number` VARCHAR(255) COMMENT '空位编号',
`traynum` VARCHAR(255) COMMENT '托盘编号',
`orderids` JSON COMMENT '托盘编号对应的订单号列表',
`memo` JSON COMMENT '备忘录',
`is_shelf` BOOL NOT NULL COMMENT '是货架库存' DEFAULT 0,
`is_connect` BOOL NOT NULL COMMENT '是接驳区库存' DEFAULT 0,
`created_at` DATETIME(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6),
`updated_at` DATETIME(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6),
`is_valid` BOOL NOT NULL COMMENT '是否取消' DEFAULT 1,
`is_active` BOOL NOT NULL COMMENT '是否删除' DEFAULT 1
) CHARACTER SET utf8mb4 COMMENT='暂存货架或接驳机空位编号表';
CREATE INDEX `numberidx` ON `Vacancys` (`number`);
CREATE INDEX `traynumidx` ON `Vacancys` (`traynum`);
CREATE INDEX `is_shelfidx` ON `Vacancys` (`is_shelf`);
CREATE INDEX `is_connectidx` ON `Vacancys` (`is_connect`);
CREATE INDEX `is_valididx` ON `Vacancys` (`is_valid`);
CREATE INDEX `is_activeidx` ON `Vacancys` (`is_active`);
CREATE TABLE IF NOT EXISTS `Warehouses` (
`id` CHAR(36) NOT NULL PRIMARY KEY,
`num` VARCHAR(255) COMMENT '短编号',
`name` VARCHAR(255) COMMENT '仓库编号',
`memo` JSON COMMENT '备忘录',
`created_at` DATETIME(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6),
`updated_at` DATETIME(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6),
`is_valid` BOOL NOT NULL COMMENT '是否有效' DEFAULT 1,
`is_active` BOOL NOT NULL COMMENT '是否删除' DEFAULT 1
) CHARACTER SET utf8mb4 COMMENT='仓库管理表';
CREATE INDEX `nameidx` ON `Warehouses` (`name`);
CREATE INDEX `numidx` ON `Warehouses` (`num`);
CREATE INDEX `is_valididx` ON `Warehouses` (`is_valid`);
CREATE INDEX `is_activeidx` ON `Warehouses` (`is_active`);
CREATE TABLE IF NOT EXISTS `Connections_Vacancys` (
`Connections_id` CHAR(36) NOT NULL,
`vacancy_id` CHAR(36) NOT NULL,
FOREIGN KEY (`Connections_id`) REFERENCES `Connections` (`id`) ON DELETE CASCADE,
FOREIGN KEY (`vacancy_id`) REFERENCES `Vacancys` (`id`) ON DELETE CASCADE
) CHARACTER SET utf8mb4;
CREATE TABLE IF NOT EXISTS `Schelves_Vacancys` (
`Schelves_id` CHAR(36) NOT NULL,
`vacancy_id` CHAR(36) NOT NULL,
FOREIGN KEY (`Schelves_id`) REFERENCES `Schelves` (`id`) ON DELETE CASCADE,
FOREIGN KEY (`vacancy_id`) REFERENCES `Vacancys` (`id`) ON DELETE CASCADE
) CHARACTER SET utf8mb4;
CREATE TABLE IF NOT EXISTS `Assignments_Subtasks` (
`Assignments_id` CHAR(36) NOT NULL,
`subtask_id` CHAR(36) NOT NULL,
FOREIGN KEY (`Assignments_id`) REFERENCES `Assignments` (`id`) ON DELETE CASCADE,
FOREIGN KEY (`subtask_id`) REFERENCES `Subtasks` (`id`) ON DELETE CASCADE
) CHARACTER SET utf8mb4;
CREATE TABLE IF NOT EXISTS `Orders_Tasks` (
`Orders_id` CHAR(36) NOT NULL,
`task_id` CHAR(36) NOT NULL,
FOREIGN KEY (`Orders_id`) REFERENCES `Orders` (`id`) ON DELETE CASCADE,
FOREIGN KEY (`task_id`) REFERENCES `Tasks` (`id`) ON DELETE CASCADE
) CHARACTER SET utf8mb4;
CREATE TABLE IF NOT EXISTS `Tasks_Subtasks` (
`Tasks_id` CHAR(36) NOT NULL,
`subtask_id` CHAR(36) NOT NULL,
FOREIGN KEY (`Tasks_id`) REFERENCES `Tasks` (`id`) ON DELETE CASCADE,
FOREIGN KEY (`subtask_id`) REFERENCES `Subtasks` (`id`) ON DELETE CASCADE
) CHARACTER SET utf8mb4;
CREATE TABLE IF NOT EXISTS `Warehouses_Schelves` (
`Warehouses_id` CHAR(36) NOT NULL,
`schelve_id` CHAR(36) NOT NULL,
FOREIGN KEY (`Warehouses_id`) REFERENCES `Warehouses` (`id`) ON DELETE CASCADE,
FOREIGN KEY (`schelve_id`) REFERENCES `Schelves` (`id`) ON DELETE CASCADE
) CHARACTER SET utf8mb4;"""
async def downgrade(db: BaseDBAsyncClient) -> str:
return """
"""