67 lines
2.7 KiB
Java
67 lines
2.7 KiB
Java
|
|
package com.ruoyi.mill.udp;
|
||
|
|
|
||
|
|
import com.ruoyi.mill.protocol.TelegramCodec;
|
||
|
|
import com.ruoyi.mill.protocol.TelegramSchema;
|
||
|
|
import org.slf4j.Logger;
|
||
|
|
import org.slf4j.LoggerFactory;
|
||
|
|
import org.springframework.stereotype.Component;
|
||
|
|
|
||
|
|
import java.util.Map;
|
||
|
|
|
||
|
|
/**
|
||
|
|
* 接收到的 L3→L2 电文分发处理器
|
||
|
|
* 根据电文号前6字节路由到对应业务处理方法
|
||
|
|
*/
|
||
|
|
@Component
|
||
|
|
public class TelegramDispatcher {
|
||
|
|
|
||
|
|
private static final Logger log = LoggerFactory.getLogger(TelegramDispatcher.class);
|
||
|
|
|
||
|
|
public void dispatch(String telegramId, byte[] payload) {
|
||
|
|
log.info("[UDP-RECV] telegramId={} payloadLen={}", telegramId, payload.length);
|
||
|
|
switch (telegramId) {
|
||
|
|
case TelegramSchema.ID_2FK101:
|
||
|
|
handle2FK101(TelegramCodec.decode(TelegramSchema.SCHEMA_2FK101, payload));
|
||
|
|
break;
|
||
|
|
case TelegramSchema.ID_2FK102:
|
||
|
|
handle2FK102(TelegramCodec.decode(TelegramSchema.SCHEMA_2FK102, payload));
|
||
|
|
break;
|
||
|
|
case TelegramSchema.ID_2FK103:
|
||
|
|
handle2FK103(TelegramCodec.decode(TelegramSchema.SCHEMA_2FK103, payload));
|
||
|
|
break;
|
||
|
|
case TelegramSchema.ID_2FK104:
|
||
|
|
handle2FK104(TelegramCodec.decode(TelegramSchema.SCHEMA_2FK104, payload));
|
||
|
|
break;
|
||
|
|
default:
|
||
|
|
log.warn("[UDP-RECV] 未知电文号: {}", telegramId);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
/** 2FK101 作业命令信息 — L3 下发生产计划 */
|
||
|
|
private void handle2FK101(Map<String, Object> data) {
|
||
|
|
log.info("[2FK101] 作业命令: planNo={} inMatNo={} unitCode={}",
|
||
|
|
data.get("PLAN_NO"), data.get("IN_MAT_NO"), data.get("UNIT_CODE"));
|
||
|
|
// TODO: 写入计划表,触发 K12F01 应答
|
||
|
|
}
|
||
|
|
|
||
|
|
/** 2FK102 作业命令撤销 — L3 撤销某条计划 */
|
||
|
|
private void handle2FK102(Map<String, Object> data) {
|
||
|
|
log.info("[2FK102] 作业撤销: planNo={} inMatNo={}", data.get("PLAN_NO"), data.get("IN_MAT_NO"));
|
||
|
|
// TODO: 从计划表软删除,记录撤销原因
|
||
|
|
}
|
||
|
|
|
||
|
|
/** 2FK103 作业命令应答 — L3 对 L2 发出计划的回执 */
|
||
|
|
private void handle2FK103(Map<String, Object> data) {
|
||
|
|
log.info("[2FK103] 命令应答: tcNo={} flag={} result={}",
|
||
|
|
data.get("TC_NO"), data.get("FLAG"), data.get("DEAL_RESULT"));
|
||
|
|
// TODO: 更新计划状态
|
||
|
|
}
|
||
|
|
|
||
|
|
/** 2FK104 产出信息应答 — L3 对 L2 上报产出的回执 */
|
||
|
|
private void handle2FK104(Map<String, Object> data) {
|
||
|
|
log.info("[2FK104] 产出应答: tcNo={} flag={} result={}",
|
||
|
|
data.get("TC_NO"), data.get("FLAG"), data.get("DEAL_RESULT"));
|
||
|
|
// TODO: 更新产出确认状态
|
||
|
|
}
|
||
|
|
}
|