# HongShanSYS **Repository Path**: code1014/hong-shan-sys ## Basic Information - **Project Name**: HongShanSYS - **Description**: 红山矿版本程序,基于赛尔6矿版本程序 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-09-30 - **Last Updated**: 2026-10-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 红山矿版本程序(HoneShan / Hongshan Mine) 煤矿自燃火灾防治综合监测与预警系统 —— 红山矿定制版本。 本代码库基于 **赛尔6矿(Saier-6)** 程序修改而来,是本项目(gitee 仓库)的源码根目录。 > 项目层面的背景与目录导航见上一级 `../README.md`。 --- ## 一、项目简介 系统面向煤矿采空区、闭墙、皮带巷等易自燃区域,采集**束管气体分析**、**分布式光纤测温**、 **闭墙多参数**、**区域环境量**、**注氮机运行参数**等数据,进行实时监测、分级判定、 预警报警联动与三维可视化展示,并提供数据回传与报表能力,服务于矿井防灭火日常管理。 针对红山矿的现场情况,本版本在基线基础上调整了设备类型、测点与束管布置、 报警阈值、菜单权限等内容。 --- ## 二、技术栈 ### 后端 `service/` | 项目 | 版本 / 说明 | |------|-------------| | JDK | Java 8 | | 框架 | Spring Boot 2.7.1(`spring-boot-starter-web`) | | 持久层 | MyBatis(`mybatis-spring-boot-starter` 1.3.2)+ XML Mapper | | 连接池 | HikariCP(最大 15 连接,含泄漏检测) | | 数据库 | PostgreSQL(基线库名 `cscew_saier6`) | | 网关通信 | Netty 4.1.31.Final(TCP 长连接) | | JSON | FastJSON 1.2.68、Jackson 2.13 | | 远程传输 | JSch 0.1.55(SFTP 数据回传) | | 其他 | Lombok、commons-lang3、commons-io | | 内部依赖 | `global.zk:LightLog`、`global.zk:GeneralToolsClass` | | 打包 | Maven,产物 `service_1.0.jar` | ### 前端 `ui/` | 项目 | 版本 / 说明 | |------|-------------| | 框架 | Vue 2.6.14 + Vue Router 3.5 + Vuex 3.6 | | UI 库 | Ant Design Vue 1.7.8、`@ant-design-vue/pro-layout` | | 脚手架 | Vue CLI 4.5(vue-antd-pro 3.0.2 模板) | | 图表 | ECharts 5.5、viser-vue | | 三维 | Three.js 0.129、Konva 9 | | 表格/文档 | jsSpreadsheet、xlsx、exceljs、file-saver | | 其他 | axios、moment、dxf-parser、two.js、echarts | ### 数据分析 `service/python/` | 项目 | 说明 | |------|------| | 框架 | Flask + Waitress | | 能力 | LSTM 气体浓度预测、样条插值分位区间计算 | | 端口 | 5200 | --- ## 三、目录结构 ``` hongshan/ ├── README.md 本文件 ├── README.en.md 英文说明(模板遗留) ├── .gitignore ├── service/ 后端服务 │ ├── pom.xml Maven 配置 │ ├── readme.md ★ 缩写约定、网关配置释义、工作面开采功能 │ ├── python/ Python 分析服务 │ │ ├── actApp.py Flask 入口(LSTM / 样条区间) │ │ ├── act03LSTM.py LSTM 预测 │ │ ├── act03SplineTransformer.py 样条插值分位区间 │ │ ├── act03Logs.py / act03Plt.py 日志与绘图 │ ├── src/main/java/com/ji_an/service/ │ │ ├── ServiceApplication.java 程序主入口 │ │ ├── _interface/ 网络接口函数定义 │ │ ├── applicationmanager/ 启动流程管理 │ │ ├── configuration/ 应用与网关解析配置 │ │ ├── cache/ 系统级缓存 │ │ ├── controller/ ★ 控制层(按业务域分包) │ │ ├── dao/ ★ 数据访问层 │ │ ├── models/ ★ 实体层 │ │ ├── netty/ ★ 网关(TCP)层 │ │ ├── py_business/ Python 服务调用桥接 │ │ ├── logger/ 日志记录器 │ │ └── utils/ 通用工具类 │ └── src/main/resources/ │ ├── application.properties 主配置(端口/数据库/网关/SFTP) │ ├── gateway_analysis_config.json 网关报文解析配置 │ ├── mappers/**/*.xml MyBatis 映射文件 │ ├── logback-spring.xml 日志配置 │ └── banner.txt 启动 LOGO └── ui/ 前端工程 ├── package.json ├── vue.config.js 端口 4728、代理 /api → 3721、/nitrogen-api → 4936 ├── .env / .env.development / .env.production ├── config/ 主题与路由配置 ├── public/ 静态资源 ├── deploy/ nginx / caddy 部署配置 └── src/ ├── api/ 接口封装(按业务域分目录) ├── components/ 公共组件 ├── config/ router.config.js、defaultSettings.js ├── core/ 权限与引导 ├── layouts/ 页面布局 ├── locales/ 国际化 ├── mock/ 模拟数据 ├── router/ ★ 路由与动态菜单生成 ├── store/ Vuex ├── utils/ 请求封装等 └── views/ ★ 业务页面 ``` --- ## 四、后端架构 ### 4.1 分层 | 包 | 职责 | |----|------| | `_interface` | `WebApi_Interface.java` —— 网络接口函数约定 | | `applicationmanager` | 启动编排:`ApplicationStarter` 关联上下文、打印版本/端口、记录启动日志、启动网关、初始化光纤设备离线态、启动全局计时、监视心跳缓存、加载设备序列号缓存 | | `configuration` | `ApplicationConfig`(上下文、版本、端口)、`GatewayAnalysisConfig`(网关解析配置装载) | | `cache` | `SystemMapCache` —— 全局系统级映射缓存 | | `controller` | REST 接口层,采用「`Xxx_WebController` + `Xxx_WebBusiness`」成对分层:控制器负责路由与参数,业务类承载逻辑 | | `dao` | MyBatis Mapper 接口,与 `resources/mappers/**` 一一对应 | | `models` | 实体与 DTO,含 `product`(设备产品实体)、`enums`、`base`、`gateway`、`http` 等 | | `netty` | TCP 网关:连接管理、报文解码、协议分发、产品解析 | | `py_business` | 调用 Python 分析服务(HTTP,`http://localhost:5200`) | | `logger` | `AppLogger` / `AppLogType` 应用级日志 | | `utils` | 通用工具(字符串、转换、字典等) | ### 4.2 网关(netty 包) 网关是整个系统的数据入口,按「**通用框架 + 具体产品解析**」设计: ``` netty/ ├── NettyServer.java 服务主类,按配置监听多个端口 ├── ChannelExceptionHandler.java 通道异常处理 ├── business/ │ ├── Netty_Business.java 网关通用业务 │ └── Modbus_CRC16.java Modbus CRC16 校验 ├── gateway/ 建立网关的通用抽象 │ ├── Gateway.java │ ├── Gateway_MessageDecoder.java 缓冲区拆包 │ ├── Gateway_MessageHandler.java 消息处理 │ └── Gateway_Protocol_Handler.java 报文处理抽象类 ├── gateway_default/ 自研产品报文解析 │ ├── Default_*.java 通道缓存、在线缓存、心跳缓存、参数、响应缓存 │ └── product_analysis/ 按产品代码分发解析 │ ├── Product_Analysis.java 解析抽象 │ ├── Product_Analysis_0101.java 束管(旧) │ ├── Product_Analysis_0104.java 束管 │ ├── Product_Analysis_0302.java 闭墙多参数 │ ├── Product_Analysis_0504.java 区域控制 │ ├── Product_Analysis_0603.java 喷淋 │ ├── Product_Analysis_CMD_*.java 各产品下行命令组装 │ ├── Analysis_DataType_0302.java 数据分类 │ └── Product_0104_Utils.java └── gateway_fibre_optical/ 第三方光纤测温主机协议 ├── FO_Protocol_Handler.java ├── FO_Temperature_Protocol_Handler.java ├── FO_Broken_Protocol_Handler.java 断纤处理 ├── FO_Temperature_Data_Cache.java └── FO_Business.java / FO_ProtocolType.java ``` **端口约定**(`application.properties`) | 配置项 | 值 | 含义 | |--------|----|------| | `server.port` | 3721 | Web 服务端口 | | `NETTY.PORTS` | 8090,5050 | 网关监听端口 | | `NETTY.CN_NAMES` | 默认,光纤 | 网关中文名 | | `NETTY.HANDLE_CLASS_PREFIX_NAME` | Default,FO | 网关处理器前缀 | ### 4.3 产品设备代号 `models/product/` 下按产品代号定义实体,代号与设备对应关系: | 代号 | 设备 | 主要采集量 | |------|------|-----------| | `0101` | 束管(旧) | 气体分析 | | `0104` | 束管监测箱 / 主控箱(束管三代) | 实时监测数据、检测箱数据、电池数据、预取数据 | | `0302` | 闭墙多参数主控箱 | 风速、C₂H₄(乙烯)、C₂H₂(乙炔)、GD8 等传感器 | | `0504` | 区域控制器 | CO、温度、压力、粉尘、火焰、UPS | | `0603` | 喷淋主控箱 | 烟雾×4、电动球阀×4、温度、CO | 所有产品实体继承抽象基类 `Product`(含序列号、父节点、在线状态、子控制器列表等通用属性)。 产品实体的通用/子控制器结构: ``` 产品(主控箱) └── 子控制器 └── 传感器(Sensor) ``` ### 4.4 报文解析配置 `resources/gateway_analysis_config.json` 定义网关如何按**相对位置**自动解析报文, 支持多产品(`product_code`)。结构包含: - `heart_beat_item_analysis` —— 心跳包字段:`name`、`data_byte_length`、 `each_sub_bytes_number`、`every_byte_means`、`sub_item_info`(名称/十六进制编码/小数位/单位)。 由于 JSON 不能写注释,其完整释义见 `service/readme.md`。 ### 4.5 Python 分析服务 Java 侧 `py_business/PythonHttpConnect.java` 通过 `HttpURLConnection` 以 POST 调用 `http://localhost:5200`,参数以 `arg_1` ~ `arg_12` / `distance` 形式传递。 | 路由 | 说明 | |------|------| | `/act03LSTM` | 提交训练数据与模型路径,执行 LSTM 预测 | | `/getBackParamSpline` | 按抽气距离返回 CO / O₂ 的分位区间参数 | --- ## 五、业务功能模块 ### 5.1 采煤工作面开采(`working_face`) 系统自动监控工作面开采进度: 1. 每天自动创建工作面开采记录; 2. 根据工作面配置的**开采速度**自动更新绑定束管的距离; 3. 更新规则:`新距离 = 当前距离 − 日开采速度`,结果小于 0 时置 0; 4. 每天凌晨自动执行。 | 接口 | 方法 | 说明 | |------|------|------| | `/working_face/getAllFaceMiningRate` | GET | 获取所有工作面开采记录 | | `/working_face/getFaceMiningRateByFaceId` | GET | 按 `face_id` 获取指定工作面开采记录 | ### 5.2 前端菜单与路由 前端**菜单由数据库驱动**,而非全部写死在代码里: 1. `src/router/generatorRouters.js` 调用 `requestMenuJQuery()`(同步 `$.ajax` POST, 对应后端 `POST /sys_menu/getMenuForRouter`)拉取菜单树; 2. 依据 `menu_path` / `menu_component` / `menu_name_cn` / `menu_name_en` / `menu_icon_name` 递归生成路由: | 路由字段 | 来源 | 说明 | |----------|------|------| | `path` | `'/' + menu_path` | 访问路径 | | `name` | `menu_name_en` | 路由名 | | `meta.title` | `menu_name_cn` | 菜单显示名 | | `meta.id` | `menu_id` | 用于权限判定 | | `component` | `@/views/ + menu_component` | 页面组件;有子节点则为 `RouteView` | 3. 根路由 `/` 使用 `BasicLayout`,`redirect: '/scene'`; 4. 登录成功后跳转到 `/InfOfMine/InfOfMineControl`; 5. `src/config/router.config.js` 中实际生效的是 `constantRouterMap` (`/user/login`、`/404`、`/BigScreen` 等静态路由);其中的 `asyncRouterMap` 属 vue-antd-pro 模板遗留,**未被挂载**。 > ⚠️ **重要**:菜单的真实中文名称与层级保存在 PostgreSQL 的 `sys_menu` 表中, > 仓库内没有任何 `.sql` 初始化脚本,因此无法从代码确定完整菜单树。 > 需要权威菜单列表时,请查询线上 `sys_menu` 表或在运行中的系统里查看左侧菜单。 > > 因此,**新增页面后需在系统管理的菜单表中登记** > (例如 `menu_path=/nitrogen/machine-list`、`menu_component=nitrogen/NitrogenMachineList`, > 详见 `ui/src/views/nitrogen/readm.md` 的待办说明)。 页面级权限通过 `judge('页面访问', meta.id)` 校验;未登录或 `sessionStorage.username` 缺失时跳转 `/user/login`。 ### 5.3 注氮模块(独立服务) 注氮机数据由**独立后端服务 `service_nitrogen`** 提供(端口 **4936**,设备为西门子 S7-1200 PLC,DB17 / DB19)。 - 前端通过独立命名空间 `/nitrogen-api` 调用,避免与主服务 `/api` 冲突; - `vue.config.js` 将 `/nitrogen-api/*` 代理到 `http://localhost:4936`; - 页面:`views/nitrogen/NitrogenMachineList.vue`(实时列表)、 `NitrogenMachineHistory.vue`(历史表格 + ECharts 趋势); - 详见 `ui/src/views/nitrogen/readm.md`。 --- ## 六、REST 接口总览 控制层位于 `controller/`,按业务域分包;命名遵循 `Xxx_WebController`(路由) + `Xxx_WebBusiness`(逻辑),部分模块含 `...02` 后缀为并行/新版实现。 | 基础路径 | 模块 | |----------|------| | `/usr/login`、`/roles/...` | 用户登录、角色 | | `/sys_menu/...`、`/sys_menu_fun/...` | 菜单、菜单功能 | | `/system/dict/type`、`/system/dict/data` | 数据字典 | | `/sys_config/...` | 系统配置 | | `/tubing/0104`、`bundle_tube_main_ctr`、`alarm_rule_config`、`/tf_setting/...` | 束管监测、主控箱、报警规则、束管与光纤设置 | | `/foe/...`、`/fo_ch/...`、`/fo_config/...`、`/fo_temp_data/...`、`/foe_warning/...` | 光纤测温主机、通道、配置、温度数据、报警 | | `confined/0302/`、`/multi/...` | 闭墙多参数 | | `/zone_ctrl/0504/...` | 区域控制 | | `/spray/0603/...` | 喷淋 | | `/gasCR/...` | 气体浓度分级 | | `/workingFace`、`/working_face/...` | 工作面、开采速率 | | `/ml/...` | 测点布置 | | `/alert/0603/...`、`/alert02/0603/...` | 报警数据与矿井状态、定时任务 | | `/condition/...`、`/condition_item/...`、`/warning/...` | 报警条件、预警条件与条目 | | `/backImages/...` | 报警图片留证 | | `/backdata/...`、`/backdata` | 数据回传、表信息与校验属性 | | `/bigScreen/0603/...` | 大屏数据 | | `/scene/...`、`/td_scene/...`、`/td_maker_info/...` | 皮带场景、TD 三维场景与建模信息 | | `/infrared_camera/...` | 红外摄像 | | `/report_template/...` | 报表模板 | | `/test_api/...` | 调试接口(SQL 执行,仅限调试) | > 完整接口清单请以 `controller/` 下各类的 `@RequestMapping` / 方法注解为准。 --- ## 七、数据层 - MyBatis XML 映射位于 `src/main/resources/mappers/**`,按业务域分目录 (`alert`、`foe`、`multi`、`scene`、`sys`、`tubing`、`working_face`、`zone_ctrl` 等)。 - `type-aliases-package = com.ji_an.service.models`,`mapper-locations = classpath:mappers/**/*.xml`。 - Mapper 扫描:`@MapperScan("com.ji_an.service.dao")`。 主要 Mapper 分组: | 分组 | 代表表 / 说明 | |------|--------------| | `alert` | 束管心跳数据、主控箱、监测箱、束管、工作面、矿井信息 | | `foe` | 光纤主机、通道、通道温度、配置、报警 | | `multi` | 闭墙多参数主控/子控制器、设备关系、报警配置 | | `tubing` | 束管、监测箱、报警规则、光纤设置 | | `zone_ctrl` | 区域控制器 | | `scene` | 皮带场景与部件绑定、TD 三维场景 | | `working_face` | 工作面、开采速率、测点、束管绑定关系 | | `sys` / `usr` | 菜单、菜单功能、字典、系统配置、用户、角色 | --- ## 八、前端结构 ### 8.1 `src/api/`(接口封装) 按业务域组织,与后端模块对应: ``` alert/ backdata/ backdata_alarminfo/ bt2/ devices/ foe/ gas_concentration_range/ influxDB/ infrared_camera/ multi/ nitrogen/ report_template/ route/ scene/ spray/ sync/ sys/ system/ threejs/ tubing/ tunnel/ tunnel3d/ usr/ warning/ workFace/ work_face/ zone_ctrl/ ``` 其中 `devices/` 覆盖通风设施与设备(风门、风窗、风机、电机、水泵、传感器、摄像头等), `threejs/`、`tunnel3d/` 提供三维场景与巷道建模能力。 ### 8.2 `src/views/`(业务页面) | 目录 | 内容 | |------|------| | `alert/` | 报警相关页面 | | `backdata/` | 数据回传 | | `condition_mangement/` | 报警/预警条件管理 | | `dashboard/` | 分析页、监控页、工作台 | | `devices/` | 设备与通风设施管理 | | `fibre_optical_eqp/` | 光纤测温设备 | | `gas_concentration_range/` | 气体浓度分级 | | `grouting/` | 注浆 | | `InfOfMine/` | 矿井信息 | | `infrared_camera/` | 红外摄像 | | `multi/` | 闭墙多参数 | | `nitrogen/`、`product_n2/` | 注氮 / 制氮机 | | `reports/` | 报表 | | `scene/` | 皮带与三维场景 | | `spray/` | 喷淋 | | `sys/` | 系统管理 | | `three_js/` | 三维渲染 | | `tubing/` | 束管监测 | | `user/`、`account/` | 用户与个人中心 | | `working_face/` | 采煤工作面 | | `zone_controller/` | 区域控制 | | 根级 | `BigScreen.vue`、`BigScreen_WatchEOV.vue`、`BigScreen_WatchSensor.vue`、`WarningAlarmOverView.vue`、`Home.vue` | --- ## 九、构建与运行 ### 9.1 环境要求 - JDK 8、Maven 3.x - PostgreSQL(默认库名 `cscew_saier6`) - Node.js 与 npm(前端) - Python 3 + Flask、Waitress、NumPy(可选,用于 LSTM / 样条分析) ### 9.2 后端 ```bash cd service mvn clean package java -jar target/service_1.0.jar ``` 启动后:Web 服务 `3721`,网关监听 `8090`(默认网关)与 `5050`(光纤网关)。 关键配置见 `src/main/resources/application.properties`: | 配置组 | 说明 | |--------|------| | `server.port` | Web 端口 3721 | | `NETTY.*` | 网关端口、协议最小长度、长度字节索引、通道缓存超时 | | `spring.datasource.*` | PostgreSQL 连接与 Hikari 连接池 | | `APP.FIBRE_OPTICAL_*` | 光纤测温:缓存清理时间、每点米数、温度上下限防溢出 | | `PRODUCT.*` | 产品在线超时、心跳记录间隔、光纤超限联动喷淋球阀间隔、自动关阀 | | `SFTP_*` / `PLSQL_EXE` | 数据回传(SFTP)与 psql 路径 | | `networkCheck.*` | 回传前的网络连通性检查 | ### 9.3 前端 ```bash cd ui npm install npm run serve # 开发,端口 4728 npm run build # 生产构建 ``` 开发代理(`vue.config.js`): | 前缀 | 目标 | |------|------| | `/api` | `http://localhost:3721`(去掉 `/api` 前缀) | | `/nitrogen-api` | `http://localhost:4936` | 环境变量:`VUE_APP_API_BASE_URL`(`.env` / `.env.development` / `.env.production`)。 部署参考 `ui/deploy/nginx.conf`、`ui/deploy/caddy.conf`。 ### 9.4 Python 分析服务(可选) ```bash cd service/python python actApp.py # 监听 0.0.0.0:5200 ``` --- ## 十、开发约定 ### 10.1 缩写 | 缩写 | 全称 | 含义 | |------|------|------| | `cscew_sys` | Coal Spontaneous Combustion Early Warning System | 煤自燃早期预警系统 | | `sys` | system | 系统 | | `usr` | user | 用户 | | `fo` | fibre optical | 光纤 | | `foe` | fibre optical equipment | 光纤测温设备 | | `eov` | electric operating valve | 电动球阀 | | `td` | three dimension | 三维 | | `cr` | concentration range | 浓度分级 | ### 10.2 代码组织 - 控制器成对出现:`Xxx_WebController`(路由)+ `Xxx_WebBusiness`(业务)。 - 设备产品实体统一继承 `Product`,按代号命名 `Product_XXXX`。 - 网关解析按产品分文件 `Product_Analysis_XXXX`,命令组装单独成类 `Product_Analysis_CMD_XXXX`。 ### 10.3 版本管理 本仓库不提交以下内容(见 `.gitignore`): - 构建产物:`service/target/`、`ui/dist/`、`ui/node_modules/` - 运行日志:`service/logs/` - IDE 配置:`.idea/`、`.settings/` - Python 虚拟环境与模型图片:`service/venv/`、`SplineModelsImage/` - 运行期数据:`heartdatajson/`、`condition_mangement_sql/` 下的导出文件 --- ## 十一、相关文档 | 文档 | 位置 | |------|------| | 缩写约定、网关配置释义、工作面开采功能 | `service/readme.md` | | 数据回传说明 | `service/src/main/java/com/ji_an/service/controller/backdata/backdata_readme.md` | | 注氮模块页面与接口 | `ui/src/views/nitrogen/readm.md` | | 前端脚手架说明 | `ui/README.md`、`ui/README.zh-CN.md` | | 项目总览 | `../README.md` | --- ## 十二、版本来源与代码现状说明 ### 12.1 与赛尔6矿基线的对应关系 代码中可以明确识别出基线来源的证据: | 证据 | 位置 | |------|------| | 数据库名 `cscew_saier6` | `service/src/main/resources/application.properties` | | Python 脚本中的绝对路径 `D:\GitWorkspace\saier6\...` | `service/python/act03LSTM.py` | | 大屏组件目录 `BigScreen_Saier6/` 与 `SaierCommonParam` | `ui/src/components/BigScreen/` | | 缩写 `cscew_sys` = Coal Spontaneous Combustion Early Warning System | `service/readme.md` | ### 12.2 代码现状(阅读与维护时请注意) 1. **「红山」品牌主要体现在 README 与目录命名上**;`ui/src` 与 `service/src` 内部 未出现硬编码的矿名。**矿名是数据而非代码** —— 由 `inf_of_mine` 表记录提供, 通过 `/alert/0603/getOnlyInfOfMine` 读取、在 `InfOfMineControl.vue` 中维护, 大屏以 `mineName` 展示;系统标题则由 `/sys_config/getSys_Name` 运行时获取 (缺省回退为 `煤自燃预警系统`,见 `src/config/defaultSettings.js`)。 2. **保留了 vue-antd-pro 脚手架遗留内容**:`views/` 下的 `dashboard/`、`form/`、 `list/`、`profile/`、`result/`、`account/` 等模板页面,以及 `router.config.js` 中未挂载的 `asyncRouterMap`、未被引用的 `generator-routers.js`。 这些不影响业务功能,排查时注意区分。 3. **多处存在 `...02` 后缀的并行实现**(如 `Alert_WebController02`、`Gas_CR_WebBusiness02`、 `Controller_0302_WebController02`),是迭代中保留的新旧两套接口,改动时需确认调用方。 4. **束管存在两代设备**:`0104`(一代,`/tubing/0104`)与 `btv2`(二代,`/api/btv2/*`), API 与页面分别位于 `api/tubing/` 与 `api/bt2/`、`views/tubing/`。 5. **注氮模块为独立后端服务**(端口 4936),前端使用**绝对地址** `baseURL='/nitrogen-api'` 绕过全局 `/api` 代理,跨域与 CORS 需单独配置(见 `views/nitrogen/readm.md` 待办)。 6. 仓库中**没有数据库初始化脚本**,表结构以线上 PostgreSQL 为准。 --- ## 十三、许可与说明 本程序为红山矿**定制交付版本**,基于赛尔6矿程序修改。代码仅供本项目及相关授权方使用。 如需与基线版本对比或合并,请以本仓库实际代码与其数据库、设备台账为准。