feat: 改造为冷轧双机架二级控制系统
- 删除 ruoyi-flowable 模块,移除所有 Flowable 依赖 - 新建 ruoyi-mill 业务模块: * protocol: iXComPCS UDP 电文编解码器(7条电文完整定义) * udp: UdpServer/UdpSender/TelegramDispatcher * domain: MillPlan / MillProductionResult * service/controller: 生产计划、产出管理骨架 - 前端改造为工业深色主题(深海军蓝 + 工业青色) - 系统标题更新为"冷轧双机架二级控制系统" - application.yml 新增 mill.udp 配置节 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,192 @@
|
||||
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); }
|
||||
|
||||
// ─────────────────────────────────────────────────────────────
|
||||
// 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)
|
||||
));
|
||||
}
|
||||
Reference in New Issue
Block a user