137 lines
8.3 KiB
SQL
137 lines
8.3 KiB
SQL
-- 项目管理系统 数据库与表结构
|
|
-- 依据:《产品文档》《初始需求》
|
|
-- 数据库名:ocean
|
|
|
|
SET NAMES utf8mb4;
|
|
SET FOREIGN_KEY_CHECKS = 0;
|
|
|
|
-- ----------------------------
|
|
-- 创建数据库
|
|
-- ----------------------------
|
|
CREATE DATABASE IF NOT EXISTS `ocean` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
|
USE `ocean`;
|
|
|
|
-- ----------------------------
|
|
-- 用户表(角色:管理员、市场部、工程部、技经部、财务部、物贸部)
|
|
-- ----------------------------
|
|
DROP TABLE IF EXISTS `users`;
|
|
CREATE TABLE `users` (
|
|
`id` varchar(64) NOT NULL COMMENT '用户ID',
|
|
`username` varchar(64) NOT NULL COMMENT '账号',
|
|
`password_hash` varchar(255) NOT NULL COMMENT '密码哈希',
|
|
`role` enum('管理员','市场部','工程部','技经部','财务部','物贸部') NOT NULL COMMENT '角色',
|
|
`display_name` varchar(64) DEFAULT NULL COMMENT '显示名称',
|
|
`created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
`updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
PRIMARY KEY (`id`),
|
|
UNIQUE KEY `uk_username` (`username`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户表';
|
|
|
|
-- ----------------------------
|
|
-- 项目表(5 个分类合并为一张表,便于查询与列表筛选)
|
|
-- 列表筛选用:progress 项目进度、cost 项目费用
|
|
-- ----------------------------
|
|
DROP TABLE IF EXISTS `projects`;
|
|
CREATE TABLE `projects` (
|
|
`id` varchar(64) NOT NULL COMMENT '项目ID',
|
|
`progress` varchar(32) DEFAULT NULL COMMENT '项目进度(列表筛选)',
|
|
`cost` varchar(32) DEFAULT NULL COMMENT '项目费用(列表筛选)',
|
|
`statistics_type` varchar(32) DEFAULT NULL COMMENT '统计类型:基建工程、业扩项目、户表、客户工程、营销项目、检修-技改-抢修、其他',
|
|
-- 合同信息
|
|
`serial_no` varchar(32) DEFAULT NULL COMMENT '序号',
|
|
`contract_code` varchar(128) NOT NULL COMMENT '合同编号',
|
|
`power_bureau_contract_code` varchar(128) DEFAULT NULL COMMENT '供电局项目合同编号',
|
|
`project_name` varchar(255) NOT NULL COMMENT '项目名称',
|
|
`sub_item_count` int DEFAULT NULL COMMENT '子项个数',
|
|
`sub_item_code` varchar(128) DEFAULT NULL COMMENT '子项编码',
|
|
`total_investment` decimal(20,4) DEFAULT NULL COMMENT '项目总投资(万元)',
|
|
`bid_contract_amount` varchar(512) DEFAULT NULL COMMENT '中标合同金额(万元,字符串存储)',
|
|
`warranty_ratio` varchar(32) DEFAULT NULL COMMENT '质保金比例',
|
|
`settlement_amount` decimal(20,4) DEFAULT NULL COMMENT '结算金额(万元)',
|
|
`total_cost_estimate` decimal(20,4) DEFAULT NULL COMMENT '总成本测算',
|
|
`voltage_level` varchar(64) DEFAULT NULL COMMENT '工程电压等级',
|
|
`project_category` varchar(64) DEFAULT NULL COMMENT '工程类别',
|
|
`owner_unit` varchar(255) DEFAULT NULL COMMENT '业主单位',
|
|
`owner_contact` varchar(255) DEFAULT NULL COMMENT '业主联系人及电话',
|
|
`bid_type` varchar(64) DEFAULT NULL COMMENT '中标形式',
|
|
`sign_date` date DEFAULT NULL COMMENT '签订日期',
|
|
`sign_date_str` varchar(128) DEFAULT NULL COMMENT '签订日期原文:日期正常或导入字符串',
|
|
`start_date` date DEFAULT NULL COMMENT '开工日期',
|
|
`start_date_str` varchar(128) DEFAULT NULL COMMENT '开工日期原文:日期正常或导入字符串',
|
|
`planned_completion_date` date DEFAULT NULL COMMENT '计划竣工日期',
|
|
`planned_completion_date_str` varchar(128) DEFAULT NULL COMMENT '计划竣工日期原文:日期正常或导入字符串',
|
|
`actual_completion_date` date DEFAULT NULL COMMENT '实际竣工日期',
|
|
`actual_completion_date_str` varchar(128) DEFAULT NULL COMMENT '实际竣工日期原文:日期正常或导入字符串',
|
|
`warranty_amount` decimal(20,4) DEFAULT NULL COMMENT '质保金(万元)',
|
|
`warranty_end_date` varchar(256) DEFAULT NULL COMMENT '质保期截止日(字符串存储)',
|
|
`actual_warranty_refund_date` date DEFAULT NULL COMMENT '实际退质保金日期',
|
|
`project_department` varchar(128) DEFAULT NULL COMMENT '所属项目部',
|
|
`project_leader_contact` varchar(255) DEFAULT NULL COMMENT '项目负责人及电话',
|
|
`payment_method` varchar(2048) DEFAULT NULL COMMENT '工程款拨付方式',
|
|
-- 成本控制
|
|
`total_cost` decimal(20,4) DEFAULT NULL COMMENT '总体成本',
|
|
`is_adjusted` varchar(512) DEFAULT NULL COMMENT '是否调整:是/否',
|
|
`migrant_worker_plan` varchar(64) DEFAULT NULL COMMENT '农民工工资(按进度计划)',
|
|
`migrant_worker_actual` decimal(20,4) DEFAULT NULL COMMENT '农民工工资(实付)',
|
|
`self_supply_material_control` decimal(20,4) DEFAULT NULL COMMENT '乙供材料费(控制)',
|
|
`material_payable_by_ratio` decimal(20,4) DEFAULT NULL COMMENT '应付材料费(按收款比例)',
|
|
`material_actual_occurred` decimal(20,4) DEFAULT NULL COMMENT '实际发生材料费',
|
|
`material_actual_paid` decimal(20,4) DEFAULT NULL COMMENT '实际支付材料费',
|
|
`other_cost_control` decimal(20,4) DEFAULT NULL COMMENT '其他费用(控制)',
|
|
`other_payable` decimal(20,4) DEFAULT NULL COMMENT '应付其他费',
|
|
`other_actual` decimal(20,4) DEFAULT NULL COMMENT '实际其他费用',
|
|
`tax` decimal(20,4) DEFAULT NULL COMMENT '税金',
|
|
`profit` decimal(20,4) DEFAULT NULL COMMENT '利润(万元)',
|
|
`actual_profit` decimal(20,4) DEFAULT NULL COMMENT '实际利润(万元)',
|
|
`cost_settlement_amount` decimal(20,4) DEFAULT NULL COMMENT '成本结算金额(万元)',
|
|
-- 应收款
|
|
`receivable_progress` decimal(20,4) DEFAULT NULL COMMENT '应收款(完成进度款)',
|
|
`invoice_amount` decimal(20,4) DEFAULT NULL COMMENT '开票金额(万元)',
|
|
`actual_receipt_amount` decimal(20,4) DEFAULT NULL COMMENT '实际收款金额(万元)',
|
|
`actual_receipt_rate` varchar(32) DEFAULT NULL COMMENT '实际收款完成率',
|
|
-- 应付款
|
|
`payable_amount` decimal(20,4) DEFAULT NULL COMMENT '应付款金额(万元)',
|
|
`actual_payment_amount` decimal(20,4) DEFAULT NULL COMMENT '实际付款金额(万元)',
|
|
`unreceived_amount` decimal(20,4) DEFAULT NULL COMMENT '未收款(万元)',
|
|
`actual_payment_rate` varchar(32) DEFAULT NULL COMMENT '实际付款完成率',
|
|
`migrant_worker_arrears` decimal(20,4) DEFAULT NULL COMMENT '民工工资清欠金额(万元)',
|
|
-- 其他
|
|
`settlement_cost_estimate` decimal(20,4) DEFAULT NULL COMMENT '结算后成本测算金额',
|
|
`settlement_labor_cost` decimal(20,4) DEFAULT NULL COMMENT '结算人工费',
|
|
`settlement_material_cost` decimal(20,4) DEFAULT NULL COMMENT '结算材料费',
|
|
`settlement_other_cost` decimal(20,4) DEFAULT NULL COMMENT '结算其他费',
|
|
`due_settlement_count` int DEFAULT NULL COMMENT '到期应结算项目个数',
|
|
`overdue_settlement_count` int DEFAULT NULL COMMENT '到期未完成结算个数',
|
|
`existing_problems` text COMMENT '存在的问题',
|
|
`suggestions` text COMMENT '建议措施',
|
|
`cumulative_progress` varchar(64) DEFAULT NULL COMMENT '累计进度',
|
|
`remark` text COMMENT '备注',
|
|
`created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
`updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
PRIMARY KEY (`id`),
|
|
KEY `idx_contract_code` (`contract_code`),
|
|
KEY `idx_project_name` (`project_name`),
|
|
KEY `idx_progress` (`progress`),
|
|
KEY `idx_cost` (`cost`),
|
|
KEY `idx_updated_at` (`updated_at`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='项目表(含合同信息、成本控制、应收款、应付款、其他)';
|
|
|
|
-- ----------------------------
|
|
-- 操作日志表(修改项目信息时记录)
|
|
-- ----------------------------
|
|
DROP TABLE IF EXISTS `operation_logs`;
|
|
CREATE TABLE `operation_logs` (
|
|
`id` varchar(64) NOT NULL COMMENT '日志ID',
|
|
`project_id` varchar(64) NOT NULL COMMENT '项目ID',
|
|
`operator_id` varchar(64) NOT NULL COMMENT '操作人ID',
|
|
`operated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '操作时间',
|
|
`summary` varchar(128) DEFAULT NULL COMMENT '修改摘要,如:合同信息、成本控制',
|
|
`detail` text COMMENT '修改内容详情',
|
|
PRIMARY KEY (`id`),
|
|
KEY `idx_project_id` (`project_id`),
|
|
KEY `idx_operator_id` (`operator_id`),
|
|
KEY `idx_operated_at` (`operated_at`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='项目操作日志表';
|
|
|
|
SET FOREIGN_KEY_CHECKS = 1;
|