Files
double-rack/ruoyi-mill/src/main/java/com/ruoyi/mill/protocol/TelegramSchema.java
Joshi 4fea237b33 feat(udp): 实现UDP通信历史记录存储与管理功能(后续测试完成之后需要恢复TelegramDispatcher,UdpSender,UdpServer,TelegramSchema这几个不然投入生产会导致OOM)
- 修改application.yml中的远程端口配置从9000调整为9001
- 在TelegramDispatcher中注入TelegramStore并实现报文存储功能
- 新增TelegramRecord类用于定义报文记录的数据结构
- 创建TelegramStore组件用于管理UDP报文的历史记录
- 更新前端udp-debug.vue界面的字段映射和数据展示逻辑
- 实现后端API接口支持历史记录查询、统计和清空操作
- 优化UDP接收日志输出并增加数据预览功能
- 重构前端API调用参数以支持分页查询功能
2026-05-05 14:43:38 +08:00

206 lines
9.6 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package com.ruoyi.mill.protocol;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import static com.ruoyi.mill.protocol.FieldType.*;
/**
* 7 条电文的字段 Schema 定义(与 电文/*.xlsx 完全对应)
*
* L3→L2接收:
* 2FK101 作业命令信息
* 2FK102 作业命令撤销
* 2FK103 作业命令应答
* 2FK104 产出信息应答
*
* L2→L3发送:
* K12F01 计划信息应答
* K12F02 计划钢卷删除
* K12F03 生产信息电文
*/
public final class TelegramSchema {
private TelegramSchema() {}
private static FieldDef s(String name, int len) { return new FieldDef(name, STRING, len, 0); }
private static FieldDef i(String name) { return new FieldDef(name, INT, 4, 0); }
private static FieldDef f(String name, int len, int precision) { return new FieldDef(name, FLOAT, len, precision); }
public static List<FieldDef> getSchema(String tcNo) {
switch (tcNo) {
case ID_2FK101: return SCHEMA_2FK101;
case ID_2FK102: return SCHEMA_2FK102;
case ID_2FK103: return SCHEMA_2FK103;
case ID_2FK104: return SCHEMA_2FK104;
case ID_K12F01: return SCHEMA_K12F01;
case ID_K12F02: return SCHEMA_K12F02;
case ID_K12F03: return SCHEMA_K12F03;
default: return null;
}
}
// ─────────────────────────────────────────────────────────────
// 2FK101 作业命令信息 L3→L2
// ─────────────────────────────────────────────────────────────
public static final String ID_2FK101 = "2FK101";
public static final List<FieldDef> SCHEMA_2FK101 = Collections.unmodifiableList(Arrays.asList(
s("PLAN_NO", 20),
s("MAT_SEQ_NO", 3),
s("UNIT_CODE", 4),
s("PLAN_TYPE", 1),
s("IN_MAT_NO", 20),
f("IN_MAT_THICK", 9, 3),
f("IN_MAT_THICK_MAX", 9, 3),
f("IN_MAT_THICK_MIN", 9, 3),
f("IN_MAT_WIDTH", 10, 3),
f("IN_MAT_WT", 5, 0),
f("IN_MAT_LEN", 12, 3),
f("IN_MAT_IN_DIA", 8, 2),
f("IN_MAT_DIA", 8, 2),
s("PONO", 10),
s("SG_SIGN", 24),
s("OUT_MAT_NO", 20),
s("CUST_IN_MAT_NO", 20),
s("REMARK", 250),
s("SPARE_1", 20),
s("SPARE_2", 20),
s("SPARE_3", 20),
s("SPARE_4", 20),
s("SPARE_5", 20),
f("SPARE_6", 13, 3),
f("SPARE_7", 13, 3),
f("SPARE_8", 13, 3),
f("SPARE_9", 13, 3),
f("SPARE_10", 13, 3)
));
// ─────────────────────────────────────────────────────────────
// 2FK102 作业命令撤销 L3→L2
// ─────────────────────────────────────────────────────────────
public static final String ID_2FK102 = "2FK102";
public static final List<FieldDef> SCHEMA_2FK102 = Collections.unmodifiableList(Arrays.asList(
s("PLAN_NO", 20),
i("MAT_SEQ_NO"),
s("UNIT_CODE", 4),
s("IN_MAT_NO", 20),
s("SPARE_1", 20),
s("SPARE_2", 20),
s("SPARE_3", 20),
s("SPARE_4", 20),
s("SPARE_5", 20)
));
// ─────────────────────────────────────────────────────────────
// 2FK103 作业命令应答 L3→L2
// ─────────────────────────────────────────────────────────────
public static final String ID_2FK103 = "2FK103";
public static final List<FieldDef> SCHEMA_2FK103 = Collections.unmodifiableList(Arrays.asList(
s("TC_NO", 6),
s("PLAN_NO", 20),
i("SEQ_NO"),
s("UNIT_CODE", 4),
s("IN_MAT_NO", 20),
s("FLAG", 1),
s("DEAL_RESULT", 50),
s("SPARE_1", 20),
s("SPARE_2", 20),
s("SPARE_3", 20),
s("SPARE_4", 20),
s("SPARE_5", 20)
));
// ─────────────────────────────────────────────────────────────
// 2FK104 产出信息应答 L3→L2
// ─────────────────────────────────────────────────────────────
public static final String ID_2FK104 = "2FK104";
public static final List<FieldDef> SCHEMA_2FK104 = Collections.unmodifiableList(Arrays.asList(
s("TC_NO", 6),
s("PLAN_NO", 20),
i("SEQ_NO"),
s("UNIT_CODE", 4),
s("OUT_MAT_NO", 20),
s("FLAG", 1),
s("DEAL_RESULT", 50),
s("SPARE_1", 20),
s("SPARE_2", 20),
s("SPARE_3", 20),
s("SPARE_4", 20),
s("SPARE_5", 20)
));
// ─────────────────────────────────────────────────────────────
// K12F01 计划信息应答 L2→L3
// ─────────────────────────────────────────────────────────────
public static final String ID_K12F01 = "K12F01";
public static final List<FieldDef> SCHEMA_K12F01 = Collections.unmodifiableList(Arrays.asList(
s("TC_NO", 6),
s("PLAN_NO", 20),
i("SEQ_NO"),
s("UNIT_CODE", 4),
s("IN_MAT_NO", 20),
s("FLAG", 1),
s("DEAL_RESULT", 50),
s("SPARE_1", 20),
s("SPARE_2", 20),
s("SPARE_3", 20),
s("SPARE_4", 20),
s("SPARE_5", 20)
));
// ─────────────────────────────────────────────────────────────
// K12F02 计划钢卷删除 L2→L3
// ─────────────────────────────────────────────────────────────
public static final String ID_K12F02 = "K12F02";
public static final List<FieldDef> SCHEMA_K12F02 = Collections.unmodifiableList(Arrays.asList(
s("PLAN_NO", 20),
i("SEQ_NO"),
s("UNIT_CODE", 4),
s("IN_MAT_NO", 20),
s("CAUSE_DESC", 50),
s("DO_TIME", 14),
s("SPARE_1", 20),
s("SPARE_2", 20),
s("SPARE_3", 20),
s("SPARE_4", 20),
s("SPARE_5", 20)
));
// ─────────────────────────────────────────────────────────────
// K12F03 生产信息电文 L2→L3
// ─────────────────────────────────────────────────────────────
public static final String ID_K12F03 = "K12F03";
public static final List<FieldDef> SCHEMA_K12F03 = Collections.unmodifiableList(Arrays.asList(
s("FLAG", 1),
s("PLAN_NO", 20),
i("SEQ_NO"),
s("UNIT_CODE", 4),
s("PROC_SEQ_NO", 4),
s("ANNEAL_FLAG", 16),
s("IN_MAT_NO", 20),
i("IN_MAT_WT"),
f("IN_MAT_THICK", 9, 3),
f("IN_MAT_WIDTH", 10, 3),
s("OUT_MAT_NO", 20),
s("CUST_MAT_NO", 20),
i("OUT_MAT_ACT_WT"),
f("OUT_MAT_ACT_THICK", 9, 3),
f("OUT_MAT_ACT_WIDTH", 10, 3),
f("OUT_MAT_ACT_LEN", 15, 3),
f("OUT_MAT_ACT_INNER_DIA", 8, 2),
f("OUT_MAT_ACT_OUTER_DIA", 8, 2),
s("PROD_SHIFT_NO", 1),
s("PROD_SHIFT_GROUP", 1),
s("START_PROD_TIME", 14),
s("END_PROD_TIME", 14),
s("SOCKET_NO", 2),
s("REMARK", 100),
s("SPARE_1", 20),
s("SPARE_2", 20),
s("SPARE_3", 20),
s("SPARE_4", 20),
s("SPARE_5", 20)
));
}