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 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 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 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 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 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 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 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) )); }