Maven 项目还能像 Sysdeo 那样用 Tomcat 插件启动吗?Eclipse 与 Cursor 选型

早年用 Sysdeo Tomcat Plugin 管「普通 Java EE 工程」很顺手:指定本机 Tomcat、挂上 web 工程、工具栏启停。迁到 Maven、再迁到 Spring Boot / Cursor 之后,常会问三件事:

  1. Maven 项目还能不能像以前那样用 Tomcat 插件启动?
  2. 现在的 Eclipse Tomcat Plugin(Sysdeo 后继)能不能管 Maven?
  3. Cursor 里有没有类似插件管 Maven 项目启动?

下面按结论 → 差异 → IDE 选型 → 实践建议说明。

结论

  1. 可以,但体验和旧「非 Maven Java EE + Sysdeo」不完全一样:Maven 负责依赖与打包,Tomcat 插件负责启动/部署,两者要配合,不能指望只点一下「启动 Tomcat」就自动搞定全部 classpath。
  2. Eclipse Tomcat Plugin(Sysdeo 的维护分支)能管 Maven 项目,并支持 Maven classpath;复杂多模块工程更稳妥的是 m2e + m2e-wtp + WTP Servers。
  3. Cursor 可装 VS Code 系扩展管理外置 Tomcat;对 Spring Boot 工程,日常更推荐 mvn spring-boot:run 或 Java Launch,而不是硬造 Sysdeo 式外挂 Tomcat。

和旧 Sysdeo 非 Maven 项目差在哪

维度 旧普通 Java EE Maven 项目
classpath 手加 lib / 项目引用 由 pom.xml 解析到本地仓库
部署单元 工程目录 / 手工 WAR mvn package 出 WAR/JAR,或 exploded target/...
插件职责 启动 Tomcat + 挂 context 仍可挂 context,但依赖须先被 Maven/IDE 解析好

所以:不是「Maven 就不能用 Tomcat 插件」,而是 「先让 Maven/IDE 建好运行 classpath 与 web 资源,再交给 Tomcat」。

三条常见启动路径

  1. IDE 插件:m2e(或等价工具)解析依赖 → WTP / Eclipse Tomcat Plugin / Community Server Connectors → 外置 Tomcat。接近 Sysdeo 的工具栏体验。
  2. Maven 插件:在 pom 里配 tomcat7-maven-plugin / Cargo 等,跑 mvn tomcat7:run。不依赖 IDE,适合命令行与 CI。
  3. Spring Boot 内嵌 Tomcat:spring-boot-maven-plugin + spring-boot:run(或打可执行 JAR)。许多现代工程(含我们这边的 MES mes-web)日常走这条。

路径 1/2 适合「传统 WAR + 独立 Tomcat」;路径 3 适合「内嵌容器开发」。选型要看项目打包形态,而不是只看有没有装 Tomcat 插件。

Eclipse:Eclipse Tomcat Plugin 能否管 Maven?

能,但别把两条产品线混为一谈。

Eclipse Tomcat Plugin(Sysdeo 后继)

  • Marketplace 名称:Eclipse Tomcat Plugin,仓库见 tomcatplugin/tomcatplugin。
  • 已支持 Maven classpath management。
  • 适合:想轻量「指一个 Tomcat 安装目录 + 挂 web 工程」的开发者。
  • 局限:复杂多模块、provided 作用域的 servlet API、Spring Boot fat JAR/WAR 与「传统 exploded webapp」模型不一致时,容易踩 classpath / ServletContainerInitializer 一类问题。

更推荐的 Eclipse Maven Web 组合

  • M2E + m2e-wtp + WTP Servers(Run on Server)。
  • m2e-wtp 负责把 war 工程配成 Dynamic Web Facet、把依赖装进部署装配。
  • 这才是 Eclipse 生态里管理 Maven WAR → Tomcat 的主流做法。

若工程是 Spring Boot:日常用内嵌 Tomcat;外置 Tomcat 通常另走 WAR 打包(例如独立 pom-war.xml),再交给 WTP 或 Tomcat Plugin 部署。不宜用 Sysdeo 后继插件替代日常的 spring-boot:run。

Cursor:有没有「管理 Maven 项目启动」的插件?

Cursor 兼容 VS Code 扩展市场,没有与 Sysdeo 同级、专门为「大型多模块 Maven」深度定制的官方插件。常用组合:

扩展 作用 备注
Extension Pack for Java / Maven for Java 导入 Maven、跑 goals 基础必装
Community Server Connectors(Red Hat) 管理本地 Tomcat、部署 WAR 较新,倾向替代旧 Tomcat 扩展
Tomcat for Java(adashen) 启停 Tomcat、跑/调试 WAR 偏旧,新项目慎用
Tomcat Auto Deploy 等 保存后同步/热部署 偏传统 WAR

对 Spring Boot 类项目,Cursor 侧更贴合的启动方式:

  1. 终端 / Maven 视图:mvn spring-boot:run -Dspring-boot.run.profiles=...
  2. Java 扩展 Launch:给主类(如 MesApplication)建 launch.json
  3. 外置 Tomcat:仅在需要验证 WAR 产物时,用 Community Server Connectors 部署 target/*.war

不建议在 Cursor 里硬造「Sysdeo 式一键外置 Tomcat」当日常主路径——和内嵌 Tomcat、本地 Docker 中间件工作流容易打架,维护成本高。

结合 Spring Boot / MES 的实践建议

以常见的 Spring Boot 多模块 Web 工程为例:

  • 日常开发:spring-boot:run(内嵌 Tomcat)+ 本机或 Docker 起 MySQL/Redis。
  • Eclipse 怀旧体验:若必须工具栏管 Tomcat,优先 WTP + m2e-wtp 部署 WAR;Sysdeo 后继仅作轻量备选。
  • 正式/生产形态:WAR 打进外置 Tomcat(或现有热补丁流程),与本地插件启动解耦。

一句话:Maven 可以用 Tomcat 插件;Eclipse 后继能管,但复杂工程更信 WTP;Cursor 能管外置 Tomcat,Spring Boot 日常仍优先内嵌启动。

MES 2026 年第 41 周工作小结

本周(10/6–10/10,master 约 18 次提交)主线是 PI API(piapi64)Java 封装 与 实时库通讯完整性(Comm Int),并顺带统一 Jackson 时间格式、清理 IO 模型与本地开发文档。合入分支:copilot/add-java-wrapper-for-piapi64、feature/rtdb-comm-int。主力模块 mes-rtdb、mes-factory、mes-process-*。

一、PI API / piapi64 Java 封装(mes-rtdb-pi)

  • 合入 copilot/add-java-wrapper-for-piapi64:JNA 对接 piapi64 原生库,经 RMI 对外提供快照等能力(mes-rtdb-pi / mes-rtdb-pi-core)
  • 封装 pisn_getsnapshots 批量读快照;完善快照取数错误处理
  • 支持 字符串点(string points);补充 PI C API 参考与库加载测试文档

二、实时库通讯完整性 Comm Int(mes-rtdb / process)

  • 合入 feature/rtdb-comm-int:工艺卡 / 自控 / 联锁侧通讯完整性实体、服务、任务与前端列表页
  • 数据源侧增强 质量位校验 与空值处理;新增 RtdbMissTracker 及单测
  • 配套 SQL:doc/sql/process_rtdb_comm_int.sql

三、IO 模型整理(InstrumentResult / Parameter)

  • InstrumentResult:补文档、收敛旧方法并标废弃,配合数据源改造
  • InstrumentParameter:清理无用字段与注释

四、平台与文档杂项

  • 多子应用补齐 spring.jackson 时间格式;SysRole / SysUser 等实体 createTime 显式 JSON 格式
  • Docx 模板 sortOrder 处理修正
  • 本地开发:STS / Nginx 文档整理、/mes/ location 说明;API Key 占位改为 local-no-key;去掉无用 hc4j-intf 依赖

节奏

时段 侧重
周三 PI wrapper 与 Comm Int 合入;Jackson / Docx / 本地文档
周四 批量快照、字符串点、PI 文档与 Instrument 清理
周五 InstrumentResult 文档化与废弃收敛

一句话:把 PI 原生能力接到 Java RMI 链路上,同时把工艺侧实时库「通讯是否断了」做成可查的 Comm Int 能力。

MES 2026 年第 40 周工作小结

本周(9/28–9/30,约 17 次提交)主线是 多应用拆分落地 与 RTDB / ISYS SDK,并修正 LIMS 位号、EOS 菜单 URL。合入分支主要包括:wip/tsdb-sdk-decompiled、feature/lims-tag-optional-sample-name、feat/mes-app。主力模块 mes-web、mes-factory、mes-rtdb、mes-security、mes-report。

一、实时库 / ISYS SDK(mes-rtdb)

  • 合入 wip/tsdb-sdk-decompiled,沉淀 TSDB SDK 反编译参考
  • 新增 ISYS SDK 接入:独立端口与上下文、Nginx 代理、监控相关配置与文档
  • 完善 ISYS SDK 与多应用说明文档

二、多应用拆分与基础设施(mes-web / scripts)

  • 应用拆分后 日志文件按应用拆分;补充 mes-utils / mes-chart / mes-message-eos 等依赖
  • Nginx 兼容历史 PDF 路径;清理部分测试子工程
  • 整理 scripts/build-all 目录处理与错误管理

三、LIMS 位号(mes-factory)

  • 样品名可空:导入 DTO、位号生成与取数逻辑同步调整,并更新说明与单测
  • 合入 feature/lims-tag-optional-sample-name

四、EOS 菜单与安全(mes-security)

  • EOS 菜单 URL 刷新:仅改写 .html,跳过 jt-web hash 路由
  • 补充 EosMenuTypeHelper 与相关单测

五、文档

  • 报表定时操作手册(md / docx + 截图)
  • 新增《JSON 请求体传输加密说明》

节奏

时段 侧重
周一 ISYS SDK / TSDB 反编译参考合入;LIMS 样品名可空
周二 EOS 菜单 URL;多应用依赖与日志拆分;nginx PDF;报表手册
周三 build-all 脚本整理;传输加密说明文档

一句话:把多应用拆分从依赖与日志侧再推进一步,同时把 ISYS SDK 与 LIMS/菜单边界问题收干净。

MES 2026 年 9 月工作小结

9 月(约 278 次提交)主线从「AI 对话能力」转向 看板能力合入、报表公式检查、计量器具导入闭环,并启动 多应用拆分 与 TSDB/ISYS 实时库底座。正式合并 PR 含 #384(看板能力增强)、**#385**(报表模板 AI 公式检查),另有大量功能分支直接合入 master / feat/mes-app。改动最集中的模块是 mes-core、mes-measure、mes-rtdb、mes-report,其次 mes-ai / mes-chart / mes-web。

一、看板与图表(#384)

  • 能力包合入:书签 URL、筛选联动、透视、虚拟滚动、看板导出、数字卡/表格增强、SQL 安全校验(Druid)等。
  • 下钻与运维:数字卡下钻、船舶/任务看板下钻;数据库监控阻塞数报警并跳转解锁页。
  • 演示看板:DEMO 能力看板、DEMO 组织看板 KPI 数字卡与末级部门/岗位人数表。

二、报表与公式检查(#385)

  • AI 公式检查:报表模板公式校验、LIMS 语义检查、与 Python 语义对齐、检查报告渲染与复检文档。
  • 模板治理:上传进度/重复提示、历史归档元数据、回滚与检查点、XLS/DOCX 版本对比与快照。
  • 报表调度:任务卡 UI、上次结果/下次执行、按应用过滤、提交后同步 Quartz Job。

三、计量器具与业务模块

  • 计量(msr):运行部菜单挂载、xlsm 模板与 VBA、VLOOKUP 装置查找、按管理部门筛装置、导入 zip + 本机一键准备。
  • 计划范围:导入摘要、未匹配装置名、布局与错误反馈增强。
  • 船舶 / 罐区:黑名单导入导出与 IMO/船名检索、月度运行 widget;罐日与库存平衡网格优化。
  • 装置日报(pdr):新增装置日报模块雏形;位号数据源筛选与列自适应。

四、平台、菜单与实时库

  • 多应用拆分:抽出平台,将 mes-web、报表、调度拆成独立子应用(feat/mes-app),依赖与部署初始化整理。
  • 菜单 v2:拖拽排序、批量改上级、按 app 检索、刷新 EOS 菜单 URL / hash。
  • TSDB / ISYS:SDK 接入与文档、实时/历史 client 固定池与分锁、监控页挂平台菜单。
  • AI 侧续作:Agent/Tool 配置快照备份回滚、LLM 用量记录、协作子 Agent 并行、装置开停工区间、BPMN 生成与布局。
  • 运维:运行时/Tomcat 状态监控可视化。

五、月度节奏

阶段 重点
上旬 计量导出与菜单、运行时监控、装置开停工、看板能力合入(#384)、AI 配置快照
中旬 模板历史/回滚、公式检查(#385)、计划导入摘要、船舶黑名单、LLM 用量与协作并行
下旬 多应用拆分、菜单 v2 / EOS 刷新、报表调度、计量 xlsm、TSDB client 池与 ISYS

一句话:9 月把看板能力与报表公式检查正式落地,计量导入闭环成型,并启动多应用拆分与 TSDB 实时库底座,为独立部署和时序接入铺路。

MES 2026 年三季度工作小结

2026 年三季度(7–9 月,约 1108 次提交:7 月 402 / 8 月 428 / 9 月 278)合并 PR 约 #312–#385(约 61 个)。主线是把 mes-ai 从「能问」推进到「能查、能画、可观测、可回滚」,并同步加深看板能力、计量导入闭环,以及多应用拆分与实时库底座。触达最多模块:mes-ai ≫ mes-chart / mes-web / mes-measure / mes-core;另有 mes-security、mes-report、mes-rtdb、mes-visual 等持续迭代。

一、MES-AI:工具链、多 Agent 与可观测

  • 多 Agent / 路由:多 Agent 入口、协作子 Agent 并行与隔离上下文、工具互斥与示例增强、Planner 多专业、工具移交编辑(#352、#368、#369 等)。
  • SQL / 存储过程工具链:参数槽位、存储过程工具、相对月份参数、excludeFromUiTable、双周期对比图、sql_compose 配方化拼装(#344、#356、#357、#365、#371)。
  • 对话体验:停止生成、内联图表、Markdown 展示、表格列组/着色/合计行、答案选择、会话历史(#326、#360、#377、#358–#361)。
  • 可观测与治理:运行轨迹、重试/复测反馈、LLM API 用量记录、Agent/Tool 配置快照备份回滚、本地 LLM profile(#328、#333、#374、#314)。
  • 业务场景:生产运行 FC、能耗日查询/饼图趋势、联锁投用率、装置开停工区间、工程师日志录入(#324、#363、#381、#366)。
  • AgentScope:8 月引入子运行时,子 Agent 配置、权限模式与协作编排联动。

二、看板与图表(mes-chart)

  • 能力增强合入 #384:书签 URL、筛选联动、透视、虚拟滚动、看板导出、数字卡下钻、SQL 安全校验(Druid)等。
  • 能耗与下钻:饼图/趋势/同比、图表下钻到明细、嵌套饼色相与零值过滤。
  • 演示与运维:DEMO 组织看板 KPI 与末级部门人数表、数据库监控阻塞数报警并跳转解锁页。
  • 工艺可视化:ISA / P&ID 符号面板与相关资产页交互。

三、业务模块:计量、报表、船舶与计划

  • 计量器具(msr):菜单/字典种子、xlsm 模板与 VBA、部门/装置筛选、导入 zip 与本机一键准备、VLOOKUP 装置查找。
  • 报表:模板历史/回滚/检查点、AI 公式检查(#385)、报表调度与 Quartz 联动(任务卡、上次结果/下次执行)。
  • 船舶 / 罐区 / 计划:月度运行 widget、黑名单导入导出、罐日与库存平衡 UI 优化、计划范围导入摘要与未匹配装置提示。
  • 工作台:P0–P2、到期提醒工作台(#327、#383)。

四、平台、权限与基础设施

  • EOS 权限与菜单:角色对象权限、批量删权、菜单 v2(拖拽排序、按 app 检索、刷新 EOS URL / hash)。
  • 多应用拆分:平台抽出,mes-web / 报表 / 调度独立子应用(feat/mes-app),依赖与文档同步整理。
  • 安全与通用:JSON 请求加密、用户导出、jqGrid 全局错误处理、在线消息详情。
  • 调度与实时库:Quartz P0–P2 工程化;TSDB / ISYS SDK 接入、实时/历史 client 池与分锁、监控页挂菜单。
  • 其它:LIMS 数据源配置、EOS 文档数据、可视化工艺面板等。

五、季度节奏

月份 重点
7 月 AI 工具链与多 Agent 底座、Quartz 工程化、工作台 P0–P2、EOS 权限与工程师日志
8 月 对话内联图 / 能耗图、sql_compose 与双区间、AgentScope、看板下钻、计量与到期提醒;发版 release-2026-08-25
9 月 看板能力合入(#384)、报表公式检查(#385)、计量 xlsm、多应用 / 菜单 v2、TSDB、报表调度

一句话:三季度把 MES-AI 做成可查询、可出图、可追踪与可回滚的生产能力,看板与计量导入闭环同步成型,并启动多应用拆分与实时库底座,为后续独立部署与时序数据接入铺路。

MES 2026 年第 39 周工作小结

本周(9/21–9/24,约 47 次提交、22 次合入)主线是 计量器具 Excel 模板链路(.xlsm / VLOOKUP / zip 一键准备),辅以 TSDB 连接稳定性 与 报表调度体验。合入分支主要包括:spike/msr-template-xlsm-datepicker、feature/msr-template-unit-lookup、feature/msr-template-depart-unit-filter、feature/msr-xlsm-vba-sign、feat/tsdb-client-pool、feat/tsdb-rt-hd-split-lock、feat/rpt-report-schedule、feat/menu-eos-refresh-vessel-monthly。主力模块 mes-measure、mes-rtdb、mes-core / mes-chart。

一、计量器具模板(mes-measure)

  • 支持 .xlsm 导入与模板下载;日期控件 spike、VBA 签名相关合入
  • 模板增强:VLOOKUP 装置查找;运行部下载预填部门,并按管理部门筛装置
  • 导入改为 zip 包 + 本机一键准备;出厂日期展示与日期转换(/、.、Excel 数值日期)修复
  • 修公式缓存显示 0、空装置编号默认 0;按选项加宽装置名称列
  • 重新生成计量器具操作手册 docx

二、实时库与监控(mes-rtdb / mes-chart)

  • TSDB 实时 / 历史 client 分锁,并改为 固定连接池
  • ISYS SDK 监控页挂到平台菜单
  • 数据库监控看板:阻塞数报警,并可跳转解锁页

三、报表调度(mes-quartz / mes-report)

  • 报表调度筛选、任务卡片布局与样式
  • 展示上次执行结果、下次执行时间;状态展示更清晰

四、菜单、装置选择与其它

  • 菜单:EOS 菜单 URL 刷新;容器月度运行数据查询与 widget
  • 装置选择页展示 URL 传入的管理部门条件
  • Maven Surefire 插件配置,便于测试执行

节奏

时段 侧重
周一 报表调度 UI / 任务卡片
周二 Excel 日期转换、.xlsm 导入、菜单同步
周三~周四 msr 模板 VLOOKUP / 部门筛选 / zip 包;TSDB 分锁与连接池

一句话:模板从「能下能导」推进到「带宏、可查找、可打包准备」;实时库侧把并发访问收成固定池与分锁,调度页则把执行信息补齐到卡片上。

OptiPlex + 华为路由 网络图

用途:本机作为局域网 DNS 过滤机(AdGuard Home),拦截网络内游戏等域名访问。

设备一览

设备 角色 地址 / 端口
华为路由器 HUAWEI-EX1XZ2 网关 / DHCP 192.168.3.1
Dell OptiPlex 7040 DNS 过滤机 固定 IP 192.168.3.7(WiFi wlp3s0)
AdGuard Home DNS / 管理界面 DNS :53,管理 http://192.168.3.7:3000
手机 / PC / 游戏设备 客户端 192.168.3.x(DHCP)

网段:192.168.3.0/24

拓扑图

flowchart TB
  Internet((互联网))

  subgraph WAN["外网侧"]
    Internet
  end

  Router["华为路由器<br/>HUAWEI-EX1XZ2<br/>LAN: 192.168.3.1<br/>DHCP / 网关"]

  Internet <-->|"WAN"| Router

  subgraph LAN["局域网 192.168.3.0/24"]
    Opti["Dell OptiPlex 7040<br/>WiFi: wlp3s0<br/>固定 IP: 192.168.3.7"]
    AG["AdGuard Home<br/>DNS :53<br/>管理 :3000"]
    Clients["手机 / PC / 游戏设备<br/>经 DHCP 拿地址"]

    Opti --- AG
  end

  Router <-->|"WiFi / 有线"| Opti
  Router <-->|"WiFi / 有线"| Clients

  Clients -.->|"① DNS 查询 → 192.168.3.7"| AG
  AG -.->|"② 放行:向上游解析<br/>拦截:游戏域名不返回"| Internet
  Clients -->|"③ 普通上网流量<br/>仍走网关 192.168.3.1"| Router

DNS 拦截数据流

sequenceDiagram
  participant D as 终端设备
  participant R as 华为路由<br/>192.168.3.1
  participant A as OptiPlex AdGuard<br/>192.168.3.7
  participant U as 上游 DNS / 互联网

  Note over R: DHCP 把 DNS 下发为 192.168.3.7
  D->>A: DNS 查询(如游戏域名)
  alt 命中黑名单
    A-->>D: 拦截(NXDOMAIN / 假 IP)
  else 正常域名
    A->>U: 向上游解析
    U-->>A: 返回真实 IP
    A-->>D: 返回解析结果
    D->>R: 业务流量走默认网关
    R->>U: 转发上网
  end

要点说明

  1. AdGuard 只拦 DNS:域名解析在 OptiPlex 上过滤;实际网页/游戏数据包仍经华为路由上网。
  2. 全网生效前提:路由器 DHCP 的 DNS 服务器填 192.168.3.7,客户端重连 WiFi 后生效。
  3. 本机固定 IP:OptiPlex 已设为 192.168.3.7/24,网关 192.168.3.1。建议在路由里做 DHCP 地址保留,避免冲突。
  4. 53 端口:已关闭 systemd-resolved 的 DNSStubListener,由 AdGuard 监听 *:53。
  5. 绕过可能:客户端改用公共 DNS、DoH/DoT、代理、直连 IP 时,DNS 黑名单可能失效。

相关路径

项目 路径
AdGuard 数据目录 /home/liu/adguardhome/
游戏拦截示例规则 /home/liu/adguardhome/game-blocklist.txt
固定 IP 脚本 /home/liu/adguardhome/set-static-ip.sh
释放 53 端口脚本 /home/liu/adguardhome/fix-port53.sh
管理界面 http://192.168.3.7:3000

MES 2026 年第 38 周工作小结

本周(9/14–9/18,约 41 次提交)主线是 计量器具台账与菜单落地,同时补齐 菜单管理 V2、AI 协作并行 与 LLM 用量记录。合入 master 的功能分支:feature/llm-api-usage、feature/ai-collab-parallel-children、feature/msr-measuring-instrument-menu;GitHub #385 于周一合入。主力模块 mes-measure、mes-workflow、mes-ai、mes-core、mes-web。

一、计量器具(mes-measure)

  • 菜单排除部门,字典种子补齐
  • 运行部菜单可配置挂载目录,按 URL 识别;菜单挪出「计量器具」后不再误判未生成,同步时按配置目录创建或迁入
  • 台账列表扩展字段,增加人员关联
  • 模版下载、出厂日期选择、Excel 属性转换、周期单位选项收了一轮

二、菜单与目录

  • 菜单拖拽排序、批量改上级;选择上级树跳过 parentId 自引用脏数据
  • EOS 目录树节点处理与交互收简
  • 安全侧支持把 MES 目录挂到已有 EOS 节点,不再新建树节点,并校验菜单与节点类型

三、AI 协作、用量与流程图(mes-ai)

  • 协作子智能体并行执行、上下文隔离,新增 child_concurrency 限制并发
  • 对话与图表调用记录 LLM API 用量
  • BPMN:自动布局与导入、名称属性清洗与校验、条件表达式清洗
  • 图表批量上限 EXEC_BATCH_MAX_ITEMS 从 20 提到 30

四、图表、报表与附件

  • 船舶图:近期计划船舶及数量查询、对应组件与下钻
  • 报表模版公式检查随 #385 合入;Excel 模版支持手动保存检查点
  • 附件删除同步回写 EOS 表头附件数,删除前校验权限
  • 文档全屏预览样式、船舶天气表单对齐小修

节奏

日期 提交约数 重心
09-14 3 #385 合入;模版检查点、文档预览
09-15 10 LLM 用量、协作并行、计划船舶;两条 AI 分支合入 master
09-16 6 BPMN 条件清洗、LLM 客户端、工程配置清理
09-17 11 菜单拖拽与挂载目录;计量器具菜单分支合入 master
09-18 13 器具台账字段与日期、目录挂接、附件删除

一句话:计量器具从菜单到台账基本能用,菜单管理 V2 和 AI 调用侧也各收了一截。

MES 2026 年第 37 周工作小结

本周(9/7–9/12,约 59 次提交,合入 feature/ai-config-snapshot)主线在 报表/文档模板版本史与回滚、能源计量公式检查(含 AI 公式检查),以及 计划范围导入体验 与 看板数值卡下钻。主力模块 mes-report / mes-plan / mes-factory,另有 mes-web、mes-ai、mes-chart、mes-vessel-operation。

一、报表与文档模板:历史、快照、回滚(mes-report)

  • 报表模板:归档元数据、历史版本、回滚;上传进度与重复文件状态
  • XLS 模板:历史管理、版本对比、回滚;mergeCells 重叠区域与样式保留优化
  • DOCX 模板:版本历史与快照
  • 计划范围文档(jhfwdoc):文档历史管理与快照

二、公式检查与能源计量报表

  • 荣盛能源计量报表公式检查报告、复检结论与模板文档
  • AI 公式检查:报表模板侧入口与解析加固、报告渲染与样式、尾随空格检测
  • 菜单 SQL 与父菜单识别修正,支撑公式检查按钮挂载

三、计划范围导入与摘要(mes-plan)

  • Excel 解析、导入摘要与未匹配装置名展示;导入结果 UI 简化
  • 计划范围布局增强;计划日期拆分年月工具方法
  • 过程名 / 未匹配装置名日志,便于排错

四、看板下钻与罐区体验

  • Chart:数值卡下钻能力与配置;船舶管理、任务管理看板下钻
  • 罐存平衡 / 罐日:网格布局与初始化、数据校验与加载优化、UI 对齐

五、船舶黑名单与装置日报

  • 船舶黑名单:IMO / 船名检索;导入导出
  • 新增装置日报(pdr)模块起步
  • 位号表单增加取数类型;表格文字列自适应

六、AI 与平台杂项(mes-ai / sys)

  • 合入 AI 配置快照分支;协作与配置管理文档增强
  • Agent 工具调用处理增强;装置开停工 / 停工区间 SQL;三率配置同步本地
  • 用户已分配角色查询;AesUtil-obf 安装脚本;本地热重载开发说明

节奏

日期 提交约数 重心
09-08 10 报表历史上传回滚、装置日报、位号
09-09 9 XLS/计划文档历史、罐存网格、角色
09-10 14 DOCX 历史、看板下钻、罐日重构
09-11 13 计划导入摘要、能源公式检查、船舶黑名单
09-12 15 AI 公式检查、Agent/开停工 SQL、导入收尾

一句话:本周把报表与文档模板的「可回滚版本史」铺开,能源计量公式检查(含 AI)落地,并补齐计划导入摘要、看板下钻与船舶黑名单等业务体验。

MES 计划范围文档:Excel 绿色区块解析核心

计划范围文档「导入」的关键,不是行式 CRUD 读表,而是用 Apache POI 把排产 Excel 里的装置绿色合并区拆成扁平记录 FlatRecord。实现类:ExcelGreenRegionExtractor(mes-plan)。

数据模型

每条记录对应「某装置下的一行进料或产品」:

字段 含义
processName 装置名(合并区文字,去换行)
load 负荷(合并区上方单元格,常格式化为 xx%)
capacity 加工量(合并区下方单元格)
type 进料 或 产品
itemName 物料 / 产品侧线名
amount 加工量或产量
yield 收率(仅产品)
rowNum / colNum 合并区左上角,用于排序与分组

入口:parseExcel(byte[] / File / InputStream) → XSSFWorkbook → 取第一个 Sheet → 返回按行列排序后的列表。

解析步骤

1. 以合并区为装置锚点

遍历 sheet.getMergedRegions()。合并区首格文本作为装置名;去掉 \n 后长度 < 2 或空则跳过(过滤装饰块)。当前实现里 isGreenCell 判断被注释掉,实际以「合并区 + 有意义的装置名」为准。

2. 块内相对列布局

对每个合并区调用 extractBlockData,以合并区左列为 centerCol:

1
2
[进料名][进料量][装置合并区][产品名][收率][产量]
-2 -1 centerCol +1 +2 +3
  • 上方一行同列:负荷;数值则 ×100 后加 %
  • 下方一行同列:年加工量 / 备注
  • 左侧两列:进料名 + 量;过滤表头「进料」及含「合计」的行
  • 右侧三列:产品名 + 收率 + 产量;过滤「产品/侧线」及「合计」

数量、收率尽量用 BigDecimal 保留两位小数。

3. 排序

全部 FlatRecord 先按 rowNum,再按 colNum 升序,保证后续按装置分组时顺序稳定(与画布从左到右、从上到下一致)。

设计要点

  1. 结构约定优于颜色:模板用绿色合并区标装置,代码侧更依赖合并区几何与相对列偏移;颜色过滤可按需打开。
  2. 扁平化:一个装置多行进料/产品 → 多条 FlatRecord,同一 processName + 相同 load/capacity。
  3. 上游用法:JhfwDocServiceImpl.importData 读 PlanFiles 二进制调用本解析器,再按 processName 分组写入主从表;解析器本身不落库。

小结

绿色区块解析 = 合并区定装置 + 固定列偏移读进料/产品 + 上下格读负荷/加工量。改模板列布局时,优先改 extractBlockData 中的相对偏移,而不是改导入接口。