立项背景和目标
为规范石化企业安全生产管理,建设安全一体化平台,实现承包商入场、施工作业、特殊作业许可、HSE检查到集团上报的全链路数字化管控,消除人工管理盲区,提升本质安全水平。
软件功能
系统涵盖承包商管理(企业入库/审批/评估/黑名单、人员档案/审核/门禁/健康/保险)、作业票管理(特殊作业许可、JSA分析、签到巡检)、HSE检查(检查→问题确认→整改→验收→罚款闭环)、机具车辆管理、临时入场审批、风险分区、集团数据上报、第三方系统对接(定位、门禁、培训、闸控等8+系统)等模块。
核心功能介绍
核心为承包商全生命周期管理:企业入库→资质审核→人员准入→作业许可→过程监管→评估退场;以及HSE检查闭环和作业票审批流转。
业务流程
承包商企业注册→资质审批→项目分配→人员准入审核→门禁授权→特殊作业票申请→JSA分析→审批签发→现场签到/巡检→HSE检查→问题整改验收→评估打分→集团数据上报。
功能路径描述
门户首页→承包商管理→企业/人员入库审核→作业票申请审批→HSE检查整改→集团上报;公共模块对接定位/门禁/培训/视频等8+外部系统实现数据联动。
架构:采用Maven多模块单体架构,分为API接口层(api-contractor/api-construction/api-factoryinfo/api-risk)和业务实现层(system下14个业务模块),通过web模块启动。架构设计上接口与实现分离,API模块定义Feign接口供微服务间调用,system模块实现具体业务。采用Controller → Service → Mapper三层架构,Activiti工作流引擎驱动审批流程(承包商审批、作业票审批、临时入场审批等),Nacos作为注册中心和配置中心支持动态配置热更新。
框架:Spring Boot 2.7.x + Spring Cloud + OpenFeign
Web容器 :Undertow
ORM:MyBatis-Plus
工作流:Activiti
分布式事务:Seata
注册/配置中心:Nacos
PDF打印:wkhtmltox
部署:Docker + K3s + GitLab CI/CD + Kuboard
我负责的模块
承包商管理模块(系统最大模块,20+个Controller,核心Service ConUserArchivesServiceImpl):实现企业入库审批、人员档案全流程、资质证书预警、黑名单管理、门禁卡管理、工时策略等,涵盖承包商从入场到退场的完整生命周期。
MySQL到达梦8数据库迁移:完成全量SQL语法适配、函数兼容改造、数据类型映射,系统成功在DM8上稳定运行(详见DM8_MIGRATION_REPORT.md)。
Docker容器化部署与CI/CD:编写Dockerfile、基础镜像(Zulu JDK + CentOS + 中文字体 + wkhtmltox),配置GitLab CI/CD自动构建部署到K3s集群,实现dev-dm分支推送自动部署。
第三方系统对接(module-common):实现8+外部系统(人员定位、门禁、培训、闸控、车辆等)的数据对接与同步。
AssignGroupUtil工作流组指派:实现Long型用户组ID的Base64压缩编码,解决Activiti流程中用户组指派的标识问题。
遇到的难点、坑和解决方案
MySQL到达梦8迁移:DM8语法与MySQL存在差异(如分页、日期函数、关键字冲突),需逐表逐SQL适配,最终通过全量SQL审查+函数替换+数据类型映射完成迁移,系统零停机切换。
Activiti工作流与业务深度耦合:流程审批节点需动态指派用户组并关联部门,开发AssignGroupUtil实现组ID压缩编码(_G_前缀+Base64),在流程引擎中透传组指派信息,解耦流程与业务。
多第三方系统对接:8+外部系统接口协议各异、数据格式不统一,通过统一Controller封装+API日志记录