fujian_water_biz_doc/docs/guides/BACKEND_CURRENT_STATUS.md

12 KiB
Raw Blame History

Backend 现状梳理

1. 文档目的

本文档用于帮助项目成员快速理解当前引入的后端子模块 backend/ 的整体技术现状、模块结构、与本项目业务设计的对应关系,以及当前可确认的边界与待进一步核实的事项。

2. 当前后端来源与状态

  • 子模块路径:backend/
  • 仓库地址:ssh://git@gitea.devops.1msoft.cn:12224/emsoft-IF/sw-system-cloud.git
  • 当前分支:develop
  • 当前提交:be71df0a1efc1d778fdfb337032993259943c1f7

说明:

  • 当前已作为 Git submodule 正常加入本仓库。
  • 该后端仓库存在一个上游遗留的嵌套 submodule 异常路径:infra/converter/markdown-converter-service-standalone
  • 该异常目前不影响代码浏览和结构分析,但可能影响部分递归 submodule 命令。

3. 总体技术架构判断

根据 backend/pom.xmlbackend/README.md,当前后端是一个基于 Spring Cloud Alibaba 的 Maven 多模块微服务系统,而非单体应用。

3.1 核心技术栈

  • Java 17
  • Spring Boot 3.4.5
  • Spring Cloud Alibaba 2023.0.1
  • Nacos注册中心、配置中心
  • Spring Cloud Gateway
  • MyBatis Plus
  • Redis + Redisson
  • Spring Security
  • XXL-Job
  • RocketMQ / Kafka / RabbitMQ按模块选配
  • Flowable工作流
  • PF4JIoT 插件机制)

3.2 总体结构特征

该后端更像“微服务底座 + 通用平台模块 + 行业业务模块”的组合:

  • 底座层负责依赖、框架、网关、启动装配。
  • 通用模块负责系统管理、基础设施、流程、支付、报表、AI、IoT 等能力。
  • 行业业务模块负责水务营收与银行代收等业务。

4. 顶层模块结构

根据 backend/pom.xml,当前顶层聚合模块包括:

  1. sw-dependencies
  2. sw-gateway
  3. sw-framework
  4. sw-server
  5. sw-module-system
  6. sw-module-infra
  7. sw-module-bpm
  8. sw-module-pay
  9. sw-module-report
  10. sw-module-ai
  11. sw-module-iot
  12. sw-business
  13. sw-business-bank

5. 顶层模块职责简述

5.1 基础底座层

sw-dependencies

  • Maven 依赖版本管理中心BOM
  • 统一管理各模块依赖版本。

sw-framework

  • 框架公共能力层。
  • 预计封装 Web、安全、租户、数据权限、MyBatis、Redis、RPC 等基础能力。

sw-gateway

  • 微服务统一入口。
  • 负责网关路由、鉴权、过滤等能力。

sw-server

  • 服务启动与装配层。
  • README 中定义为“管理后台 + 用户 APP 的服务端”。

5.2 平台通用能力层

sw-module-system

  • 系统功能模块。
  • 包括用户、角色、菜单、部门、岗位、租户、字典、通知、日志等。

sw-module-infra

  • 基础设施模块。
  • 包括代码生成、接口文档、数据库文档、配置管理、文件服务、定时任务、API 日志、监控等。

sw-module-bpm

  • 工作流模块。
  • 基于 Flowable承接审批流、表单、任务、抄送、驳回、会签等能力。

sw-module-pay

  • 支付模块。
  • 包括支付订单、退款订单、回调通知、支付接入等能力。

sw-module-report

  • 报表与大屏模块。
  • 包括报表设计器、大屏设计器。

sw-module-ai

  • AI 模块。
  • 当前与营收主流程关联度相对较低。

sw-module-iot

  • 物联网模块。
  • 与远传水表、厂家协议、设备接入、集抄平台等方向高度相关。

5.3 行业业务层

sw-business

  • 水务业务模块。
  • 是当前最值得重点分析的行业核心模块。

sw-business-bank

  • 多银行代收模块。
  • 与银行代扣、托收、送盘、银行报文处理相关。

6. 重点模块下钻结果

6.1 sw-business 结构

sw-business 包含两个子模块:

  • sw-business-api
  • sw-business-server

sw-business-api

定位:业务 API / DTO / Feign 契约层。

主要特征:

  • 依赖 sw-common
  • 支持参数校验
  • 支持 OpenFeign
  • 提供 OpenAPI 文档模型支持

判断:

  • 主要承载对外接口定义、DTO/VO、服务间调用契约。
  • 不直接作为运行服务。

sw-business-server

定位:水务业务服务实现层。

主要依赖:

  • sw-module-system-api
  • sw-module-infra-api
  • sw-business-api
  • sw-business-bank-apiprovided
  • sw-module-bpm-api

技术能力:

  • Web
  • Security
  • MyBatis
  • Redis
  • RPC
  • Nacos 注册/配置
  • Job
  • MQ
  • Monitor

判断:

  • 这是当前水务营收业务的核心服务实现模块。
  • 大概率承载客户、表务、抄表、账务、工单等业务逻辑。
  • 与银行代收和流程模块均存在集成关系。

6.2 sw-business-bank 结构

sw-business-bank 包含两个子模块:

  • sw-business-bank-api
  • sw-business-bank-server

sw-business-bank-api

定位:银行业务 API 契约层。

主要特征:

  • 依赖 sw-common
  • 支持参数校验
  • 支持 OpenFeign
  • 支持 OpenAPI 文档模型

判断:

  • 主要用于银行代收、托收等服务间调用契约。

sw-business-bank-server

定位:多银行代收服务实现层。

主要依赖:

  • sw-module-system-api
  • sw-module-infra-api
  • sw-business-bank-api
  • sw-business-api

技术能力:

  • Web
  • Security
  • MyBatis
  • Redis
  • RPC
  • Nacos
  • Job
  • MQ
  • Monitor
  • 国密算法支持SM2/SM4

判断:

  • 这是一个独立的银行业务服务。
  • 很可能承载托收、代扣、送盘、回盘、银行接口报文处理。
  • sw-business 存在双向协同关系。

6.3 sw-module-iot 结构

sw-module-iot 包含三个子模块:

  • sw-module-iot-api
  • sw-module-iot-biz
  • sw-module-iot-plugins

sw-module-iot-api

定位IoT API 与插件扩展接口层。

主要特征:

  • 依赖 sw-common
  • 引入 pf4j-spring
  • 提供 IoT 插件机制的接口抽象

判断:

  • 不只是普通 API 层,还承担插件扩展点定义职责。

sw-module-iot-biz

定位IoT 业务主服务层。

POM 描述明确提到:

  • 产品管理
  • 设备管理
  • 协议管理

主要技术能力:

  • Web / Security
  • MyBatis / Redis
  • RPC
  • Nacos
  • Job
  • MQ
  • Quartz
  • PF4J
  • Groovy / GraalVM JS ScriptEngine
  • 可选 RocketMQ / Kafka / RabbitMQ
  • 额外依赖 taos-jdbcdriver

判断:

  • 这是一个较重的 IoT 业务中台模块。
  • 不只是设备台账,还可能包含协议接入、规则执行、消息桥接、动态脚本处理等能力。
  • 对“远传水表、集抄平台、厂家协议、水表数据交互”场景具有直接参考价值。

sw-module-iot-plugins

定位IoT 插件聚合层。

包含四个插件子模块:

  • sw-module-iot-plugin-common
  • sw-module-iot-plugin-http
  • sw-module-iot-plugin-mqtt
  • sw-module-iot-plugin-emqx

sw-module-iot-plugin-common

  • 插件公共能力层。
  • 提供 Web、Vertx、校验等共通依赖。

sw-module-iot-plugin-http

  • HTTP 协议插件。
  • 插件主类:IotHttpVertxPlugin
  • 支持插件包与 standalone 打包。

sw-module-iot-plugin-mqtt

  • MQTT 协议插件。
  • 插件主类:MqttPlugin
  • 依赖 vertx-mqtt

sw-module-iot-plugin-emqx

  • EMQX 专用插件。
  • 插件主类:IotEmqxPlugin
  • 说明系统不仅支持通用 MQTT也对 EMQX 做了专门适配。

判断:

  • sw-module-iot 采用了明显的可插拔协议接入架构。
  • 适合对接多厂家、多协议、多接入方式的物联网设备场景。

7. 与当前福建水务营收文档的映射关系

结合本项目已有文档结构,可以先建立如下对应关系:

7.1 营收主业务

优先对应模块:

  • sw-business-server
  • sw-business-api

可能映射章节:

  • 客户资料管理
  • 抄表开账
  • 营业收费
  • 账务处理
  • 工单办理
  • 部分表务相关业务

7.2 银行代收与托收业务

优先对应模块:

  • sw-business-bank-server
  • sw-business-bank-api

可能映射章节:

  • 代收业务
  • 银行接口
  • 托收代扣
  • 送盘/回盘

7.3 远传表 / 物联网 / 集抄接入

优先对应模块:

  • sw-module-iot-biz
  • sw-module-iot-api
  • sw-module-iot-plugin-http
  • sw-module-iot-plugin-mqtt
  • sw-module-iot-plugin-emqx

可能映射章节:

  • 物联网平台
  • 集抄平台
  • 厂家设备信息管理
  • 水表数据交互接口
  • 水表用户同步接口

7.4 支付与退款

优先对应模块:

  • sw-module-pay

可能映射章节:

  • 在线缴费
  • 柜面扫码支付
  • 支付订单与退款

7.5 流程审批与工单流转

优先对应模块:

  • sw-module-bpm

可能映射章节:

  • 业务工单
  • 报装流程
  • 审批流相关能力

8. 当前能确认的现状结论

8.1 已确认

  1. 当前后端是微服务多模块架构,不是单体应用。
  2. 已具备较完整的通用平台底座能力:系统、基础设施、流程、支付、报表。
  3. 已存在明确的水务业务模块:sw-business
  4. 已存在明确的银行业务模块:sw-business-bank
  5. 已存在明确的 IoT 模块,并且采用插件化协议接入架构。
  6. IoT 模块对远传水表、集抄平台、厂家协议接入场景具备较高相关性。

8.2 尚未完全确认

以下内容目前还只是根据模块命名、POM 依赖与 README 做出的结构判断,尚未下钻到具体 Java 包、Controller、Service、Mapper 层:

  1. sw-business-server 内是否已经完整实现:

    • 客户资料
    • 抄表开账
    • 营业收费
    • 账务处理
    • 发票管理
    • 催缴管理
    • 工单办理
  2. sw-business-bank-server 内是否已经完整实现:

    • 银行托收
    • 银行代扣
    • 送盘/回盘
    • 对账
    • 国密报文交互
  3. sw-module-iot-biz 内是否已经完整实现:

    • 产品管理
    • 设备台账
    • 协议管理
    • 厂家适配
    • 数据桥接与规则执行

9. 当前后端分析的限制

  1. 当前仅完成了模块级与 POM 级分析,尚未做代码包级逐层拆解。
  2. 当前未完成运行验证,尚未确认各服务启动配置与部署方式。
  3. 当前未完成数据库脚本与后端实体/Mapper 的逐项映射。
  4. 当前未完成接口清单与文档章节的逐条绑定。

10. 建议的下一步分析顺序

为了更高效支撑本项目设计文档,建议后续按以下顺序继续下钻:

第一阶段:业务代码结构分析

优先分析:

  1. sw-business-server
  2. sw-business-bank-server
  3. sw-module-iot-biz

目标:

  • 找到 Controller / Service / Mapper / DO / VO 的实际结构
  • 确认是否已有“客户、抄表、账单、收费、工单、托收、设备”对应实现

第二阶段:数据库与代码映射

目标:

  • 对照 sql/lhc_数据库设计.md
  • 对照 docs/design/04_Appendix/Archive/05_Data_Dictionary/营收数据字典.md
  • 找出已实现表、未实现表、后端已有但文档未覆盖的对象

第三阶段:接口与文档映射

目标:

  • 对照接口设计文档
  • 对照物联网接口规范附件
  • 确认后端已有接口、待补接口、历史遗留接口

11. 当前建议的阅读重点

如果只想快速建立对后端系统的认识,建议优先关注:

  1. backend/pom.xml
  2. backend/sw-business/sw-business-server
  3. backend/sw-business-bank/sw-business-bank-server
  4. backend/sw-module-iot/sw-module-iot-biz
  5. backend/sw-module-iot/sw-module-iot-plugins

12. 一句话结论

当前 backend 后端系统的现状可以概括为:

它已经具备较完整的微服务底座与通用平台能力并且明确拆分出了水务业务、银行代收、IoT 设备接入三条与本项目高度相关的业务线;但目前我们对其理解仍停留在模块结构层,尚需进一步下钻代码包结构、数据库映射和接口实现,才能形成可直接落地到本项目设计文档的精确结论。

13. 相关延伸文档

  • 真实表清单与数据字典映射:docs/guides/BACKEND_TABLE_MAPPING.md