yue 2 周之前
父节点
当前提交
c6753d2864

+ 43 - 0
Doc/Docker部署/01使用mysql数据库/config_mysql.yml

@@ -0,0 +1,43 @@
+app:
+  # 应用名称
+  name: '铁路造价智能化工具'
+  version: '2020' # 应用版本 2020|2024
+  use_version: true
+  source_path: './temp_files'
+  task_api_url: 'http://{host}:{port}/api/v1'
+  task_max_projects:20 # 最大项目数同时运行
+  task_interval: 60  # 秒
+db:
+  sqlserver_mian_2024:
+    driver: '{FreeTDS}'
+    server: 
+    username: 
+    password: 
+    database: RecoData2024
+    trusted_connection: false
+  sqlserver_mian_2020:
+    driver: '{FreeTDS}'
+    server: 
+    username: 
+    password: 
+    database: RecoData2020
+    trusted_connection: false
+    trusted_connection: false
+  # MySQL 配置
+  mysql_main:
+    db: iwb_railway_costing_v1
+    host: railway_costing-mysql
+    port: 3306
+    user: root
+    password: 12345654321
+    charset: utf8mb4
+  iwb_railway_costing_v1:
+    db: iwb_railway_costing_v1
+    host: railway_costing-mysql
+    port: 3306
+    user: root
+    password: 12345654321
+    charset: utf8mb4
+logger:
+  file_path: './logs/'
+  level: 'info'

+ 41 - 0
Doc/Docker部署/01使用mysql数据库/docker-compose_mysql.yml

@@ -0,0 +1,41 @@
+version: '3.8'
+
+services:
+  rc-mysql:
+    image: mysql:8.0.39
+    container_name: railway_costing-mysql
+    environment:
+      - MYSQL_ROOT_PASSWORD=12345654321
+      - TZ=Asia/Shanghai
+    volumes:
+      - /home/docker/iwb_railway_costing_v1/mysql/log:/var/log/mysql
+      - /home/docker/iwb_railway_costing_v1/mysql/data:/var/lib/mysql
+      - /etc/localtime:/etc/localtime:ro
+      - /home/docker/iwb_railway_costing_v1/app/init_mysql.sql:/docker-entrypoint-initdb.d/init.sql # 挂载 init.sql 文件
+    networks:
+      - railway_costing_mysql_v1
+    restart: always
+
+  rc-app:
+    build:
+      context: ../
+      dockerfile: .
+    image: railway_costing-app_mysql:1.0.0
+    container_name: railway_costing-app_mysql
+    depends_on:
+      - rc-mysql
+    environment:
+      - TZ=Asia/Shanghai
+    volumes:
+      - /home/docker/iwb_railway_costing_v1/app/config_mysql.yml:/app/config.yml
+      - /home/docker/iwb_railway_costing_v1/app/logs:/app/logs
+      - /home/docker/iwb_railway_costing_v1/app/temp_files:/app/temp_files
+    networks:
+      - railway_costing_mysql_v1
+    ports:
+      - "7011:5123"
+    restart: always
+
+networks:
+  railway_costing_mysql_v1:
+    driver: bridge

+ 86 - 0
Doc/Docker部署/01使用mysql数据库/init_mysql.sql

@@ -0,0 +1,86 @@
+CREATE DATABASE IF NOT EXISTS iwb_railway_costing_v1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;
+USE iwb_railway_costing_v1;
+
+-- 创建项目任务表
+CREATE TABLE IF NOT EXISTS project_task (
+    id INT AUTO_INCREMENT PRIMARY KEY,
+    task_name VARCHAR(255) NOT NULL COMMENT '任务名称',
+    task_sort INT DEFAULT 0 COMMENT '任务排序',
+    task_desc VARCHAR(1000) COMMENT '任务描述',
+    is_cover TINYINT DEFAULT 0 COMMENT '是否覆盖',
+    project_id VARCHAR(50) NOT NULL COMMENT '项目编号',
+    budget_id INT NOT NULL DEFAULT 0 COMMENT '概算序号',
+    item_id INT NOT NULL COMMENT '条目序号',
+    item_code VARCHAR(255) NOT NULL COMMENT '条目编号',
+    file_path TEXT COMMENT '文件路径',
+    process_status INT NOT NULL DEFAULT 0 COMMENT '处理状态(0:草稿, 1:待运行, 2:运行中, 200:运行成功, 4:运行失败 5:取消运行)',
+    process_time DATETIME COMMENT '处理时间',
+    process_error VARCHAR(4000) COMMENT '处理错误信息',
+    send_status INT NOT NULL DEFAULT 0 COMMENT '推送状态(0:未推送, 1:推送中 ,2:推送成功, 3:推送失败, 4:已修改)',
+    send_time DATETIME COMMENT '推送时间',
+    send_error VARCHAR(4000) COMMENT '推送错误信息',
+    is_del TINYINT NOT NULL DEFAULT 0 COMMENT '是否删除(0:否, 1:是)',
+    deleted_by VARCHAR(50) COMMENT '删除人',
+    deleted_at DATETIME COMMENT '删除时间',
+    created_by VARCHAR(50) COMMENT '创建人',
+    created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
+    updated_by VARCHAR(50) COMMENT '更新人',
+    updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
+    INDEX idx_project_id (project_id),
+    INDEX idx_budget_id (budget_id),
+    INDEX idx_item_id (item_id),
+    INDEX idx_item_code (item_code),
+    INDEX idx_created_at (created_at)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='项目任务表';
+
+-- 创建项目定额表
+CREATE TABLE IF NOT EXISTS project_quota (
+    id INT AUTO_INCREMENT PRIMARY KEY,
+    task_id INT NOT NULL COMMENT '任务编号',
+    project_id VARCHAR(50) NOT NULL COMMENT '项目编号',
+    budget_id INT NOT NULL COMMENT '概算序号',
+    budget_code VARCHAR(50) COMMENT '概算编号',
+    item_id INT NOT NULL COMMENT '条目序号',
+    item_code VARCHAR(255) NOT NULL COMMENT '条目编号',
+    quota_id INT NULL DEFAULT 0 COMMENT '定额序号',
+    quota_code VARCHAR(50) COMMENT '定额编号',
+    entry_name VARCHAR(255) COMMENT '工程或费用项目名称',
+    units VARCHAR(20) COMMENT '单位',
+    amount FLOAT COMMENT '数量',
+    ex_file VARCHAR(4000) COMMENT 'excel文件',
+    ex_cell VARCHAR(50) COMMENT '数量单元格位置',
+    ex_row VARCHAR(4000) COMMENT '该行内容',
+    ex_unit VARCHAR(50) COMMENT 'excel中给出的单位',
+    ex_amount FLOAT COMMENT 'excel中给出的数量',
+    send_status INT NOT NULL DEFAULT 0 COMMENT '推送状态(0:未推送,1:推送中 ,2:已推送, 3:推送失败, 4:已修改)',
+    send_time DATETIME COMMENT '推送时间',
+    send_error VARCHAR(4000) COMMENT '推送错误信息',
+    is_del TINYINT NOT NULL DEFAULT 0 COMMENT '是否删除(0:否, 1:是)',
+    deleted_by VARCHAR(50) COMMENT '删除人',
+    deleted_at DATETIME COMMENT '删除时间',
+    created_by VARCHAR(50) COMMENT '创建人',
+    created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
+    updated_by VARCHAR(50) COMMENT '更新人',
+    updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
+    INDEX idx_project_id (project_id),
+    INDEX idx_budget_id (budget_id),
+    INDEX idx_item_id (item_id),
+    INDEX idx_item_code (item_code),
+    INDEX idx_created_at (created_at)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='项目定额表';
+
+-- 创建日志表
+CREATE TABLE IF NOT EXISTS sys_log (
+    id INT AUTO_INCREMENT PRIMARY KEY,
+    username VARCHAR(255) NOT NULL COMMENT '用户名',
+    operation_type VARCHAR(50) NOT NULL COMMENT '操作类型',
+    operation_desc VARCHAR(1000) COMMENT '操作描述',
+    operation_result TINYINT COMMENT '操作结果',
+    operation_module VARCHAR(100) COMMENT '操作模块',
+    operation_data TEXT COMMENT '操作数据',
+    data_changes TEXT COMMENT '数据变更记录',
+    operation_ip VARCHAR(50) COMMENT '操作IP',
+    created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
+    INDEX idx_username (username),
+    INDEX idx_created_at (created_at)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='操作日志表';

+ 35 - 0
Doc/Docker部署/02使用sqlserver数据库/config_sqlserver.yml

@@ -0,0 +1,35 @@
+app:
+  # 应用名称
+  name: '铁路造价智能化工具'
+  version: '2020' # 应用版本 2020|2024
+  use_version: true
+  source_path: './temp_files'
+  task_api_url: 'http://{host}:{port}/api/v1'
+  task_max_projects:20 # 最大项目数同时运行
+  task_interval: 60  # 秒
+db:
+  sqlserver_mian_2024:
+    driver: '{FreeTDS}'
+    server: 
+    username: 
+    password: 
+    database: RecoData2024
+    trusted_connection: false
+  sqlserver_mian_2020:
+    driver: '{FreeTDS}'
+    server: 
+    username: 
+    password: 
+    database: RecoData2020
+    trusted_connection: false
+  Iwb_RailwayCosting:
+    driver: '{FreeTDS}'
+    server: 
+    username: 
+    password: 
+    database: iwb_railway_costing_v1
+    trusted_connection: false
+logger:
+  file_path: './logs/'
+  level: 'info'
+

+ 19 - 0
Doc/Docker部署/02使用sqlserver数据库/docker-compose_sqlserver.yml

@@ -0,0 +1,19 @@
+version: '3.8'
+
+services:
+  rc-app:
+    build:
+      context: ../
+      dockerfile: .
+    image: railway_costing-app_sqlserver:1.0.0
+    container_name: railway_costing-app_sqlserver
+    environment:
+      - TZ=Asia/Shanghai
+      - ACCEPT_EULA=Y
+    volumes:
+      - /home/docker/iwb_railway_costing_v1/app/config_sqlserver.yml:/app/config.yml
+      - /home/docker/iwb_railway_costing_v1/app/logs:/app/logs
+      - /home/docker/iwb_railway_costing_v1/app/temp_files:/app/temp_files
+    ports:
+      - "7010:5123"
+    restart: always

+ 134 - 0
Doc/Docker部署/02使用sqlserver数据库/init_sqlserver.sql

@@ -0,0 +1,134 @@
+IF NOT EXISTS (SELECT * FROM sys.databases WHERE name = 'iwb_railway_costing_v1')
+BEGIN
+    CREATE DATABASE iwb_railway_costing_v1
+END
+GO
+
+USE iwb_railway_costing_v1
+GO
+
+USE iwb_railway_costing_v1
+GO
+
+
+
+/*-- 删除项目任务表
+IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[project_task]') AND type in (N'U'))
+BEGIN
+    DROP TABLE [dbo].[project_task]
+END
+GO*/
+
+-- 创建项目任务表
+IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[project_task]') AND type in (N'U'))
+BEGIN
+CREATE TABLE [dbo].[project_task] (
+    [id] INT IDENTITY(1,1) PRIMARY KEY,
+    [task_name] NVARCHAR(255) NOT NULL,
+    [task_sort] INT DEFAULT 0,
+    [task_desc] NVARCHAR(1000) NULL,
+    [is_cover]  INT DEFAULT 0,
+    [project_id] NVARCHAR(50) NOT NULL,
+    [budget_id] INT DEFAULT 0,
+    [item_id] INT NOT NULL,
+    [item_code] NVARCHAR(255) NOT NULL,
+    [file_path] NVARCHAR(MAX) NULL,
+    [process_status] INT NOT NULL DEFAULT 0,
+    [process_time] DATETIME NULL,
+    [process_error] NVARCHAR(4000) NULL,
+    [send_status] INT NOT NULL DEFAULT 0,
+    [send_time] DATETIME NULL,
+    [send_error] NVARCHAR(4000) NULL,
+    [is_del] INT NOT NULL DEFAULT 0,
+    [deleted_by] NVARCHAR(50) NULL,
+    [deleted_at] DATETIME NULL,
+    [created_by] NVARCHAR(50) NULL,
+    [created_at] DATETIME NOT NULL DEFAULT GETDATE(),
+    [updated_by] NVARCHAR(50) NULL,
+    [updated_at] DATETIME NOT NULL DEFAULT GETDATE()
+)
+
+CREATE INDEX [idx_project_id] ON [dbo].[project_task] ([project_id])
+CREATE INDEX [idx_budget_id] ON [dbo].[project_task] ([budget_id])
+CREATE INDEX [idx_item_id] ON [dbo].[project_task] ([item_id])
+CREATE INDEX [idx_item_code] ON [dbo].[project_task] ([item_code])
+CREATE INDEX [idx_created_at] ON [dbo].[project_task] ([created_at])
+END
+GO
+
+/* -- 删除项目定额表
+   IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[project_quota]') AND type in (N'U'))
+   BEGIN
+       DROP TABLE [dbo].[project_quota]
+   END
+   GO
+*/
+-- 创建项目定额表
+IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[project_quota]') AND type in (N'U'))
+BEGIN
+CREATE TABLE [dbo].[project_quota] (
+    [id] INT IDENTITY(1,1) PRIMARY KEY,
+    [task_id] INT NOT NULL,
+    [project_id] NVARCHAR(50) NOT NULL,
+    [budget_id] INT NOT NULL,
+    [budget_code] NVARCHAR(50) NULL,
+    [item_id] INT NOT NULL,
+    [item_code] NVARCHAR(255) NOT NULL,
+    [quota_id] INT NULL DEFAULT 0,
+    [quota_code] NVARCHAR(50) NULL,
+    [entry_name] NVARCHAR(255) NULL,
+    [units] NVARCHAR(20) NULL,
+    [amount] FLOAT NULL,
+    [ex_file] NVARCHAR(4000) NULL,
+    [ex_cell] NVARCHAR(50) NULL,
+    [ex_row] NVARCHAR(4000) NULL,
+    [ex_unit] NVARCHAR(50) NULL,
+    [ex_amount] FLOAT NULL,
+    [send_status] INT NOT NULL DEFAULT 0,
+    [send_time] DATETIME NULL,
+    [send_error] NVARCHAR(4000) NULL,
+    [is_del] INT NOT NULL DEFAULT 0,
+    [deleted_by] NVARCHAR(50) NULL,
+    [deleted_at] DATETIME NULL,
+    [created_by] NVARCHAR(50) NULL,
+    [created_at] DATETIME NOT NULL DEFAULT GETDATE(),
+    [updated_by] NVARCHAR(50) NULL,
+    [updated_at] DATETIME NOT NULL DEFAULT GETDATE()
+)
+
+CREATE INDEX [idx_project_id] ON [dbo].[project_quota] ([project_id])
+CREATE INDEX [idx_budget_id] ON [dbo].[project_quota] ([budget_id])
+CREATE INDEX [idx_item_id] ON [dbo].[project_quota] ([item_id])
+CREATE INDEX [idx_item_code] ON [dbo].[project_quota] ([item_code])
+CREATE INDEX [idx_created_at] ON [dbo].[project_quota] ([created_at])
+END
+GO
+
+
+/*-- 删除日志表
+IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[sys_log]') AND type in (N'U'))
+BEGIN
+    DROP TABLE [dbo].[sys_log]
+END
+GO*/
+
+-- 创建日志表
+IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[sys_log]') AND type in (N'U'))
+BEGIN
+CREATE TABLE [dbo].[sys_log] (
+    [id] INT IDENTITY(1,1) PRIMARY KEY,
+    [username] NVARCHAR(255) NOT NULL,
+    [operation_type] NVARCHAR(50) NOT NULL,
+    [operation_desc] NVARCHAR(1000) NULL,
+    [operation_result] INT NULL,
+    [operation_module] NVARCHAR(100) NULL,
+    [operation_data] NVARCHAR(MAX) NULL,
+    [data_changes] NVARCHAR(MAX) NULL,
+    [operation_ip] NVARCHAR(50) NULL,
+    [created_at] DATETIME NOT NULL DEFAULT GETDATE()
+)
+
+CREATE INDEX [idx_username] ON [dbo].[sys_log] ([username])
+CREATE INDEX [idx_created_at] ON [dbo].[sys_log] ([created_at])
+END
+GO

+ 6 - 0
Doc/Docker部署/部署配置修改.txt

@@ -0,0 +1,6 @@
+01  需要修改docker-compose里的挂载目录
+02  需要修改config里的   app.task_api_url  配置 
+03  需要修改config里的  sqlserver 相关的 server,username,password 。
+04  在本地连接sqlserver数据库,可以使用 trusted_connection: true , server: .\{SqlServer实例名称} ,用户名密码留空进行连接(这个只在windows环境{SQL Server}的驱动配置下测试过,docker环境{FreeTDS}驱动未测试)。
+05  如果使用mysql版本进行部署,config里mysql的相关配置可以无需修改。如果修改需和init_mysql.sql脚本里的数据库名及docker-compose的相关配置一起修改。
+