package com.zy.core.thread.impl; import com.zy.common.model.MatDto; import com.zy.core.Slave; import com.zy.core.cache.MessageQueue; import com.zy.core.enums.SlaveType; import com.zy.core.model.LedSlave; import com.zy.core.model.Task; import com.zy.core.model.command.LedCommand; import com.zy.core.thread.LedThread; import lombok.extern.slf4j.Slf4j; import java.util.HashSet; import java.util.List; import java.util.Set; @Slf4j @SuppressWarnings("all") public class NormalLedThread implements LedThread, Runnable { private Slave slave; private Set workNos = new HashSet<>(); private boolean ledMk = false; private boolean resetStatus = false; // 复位状态 // 显示器 private StringBuffer stringBuffer = new StringBuffer(); private List commandList; private StringBuffer errorMsg = new StringBuffer(); public NormalLedThread(LedSlave ledSlave) { this.slave = ledSlave; } @Override @SuppressWarnings({"InfiniteLoopStatement", "unchecked"}) public void run() { // connect(); while (true) { try { Task task = MessageQueue.poll(SlaveType.Led, slave.getId()); if (task != null) { switch (task.getStep()) { // 写数据 case 1: write((List) task.getData()); break; // 复位 case 2: reset(); break; case 3: error((String) task.getData()); break; case 4: errorReset(); break; default: break; } } Thread.sleep(1000); } catch (Exception e) { e.printStackTrace(); } } } public void write(List list) { commandList = list; StringBuilder sb = new StringBuilder(); for (LedCommand command : list) { sb.append(command.getTitle()).append("(").append(command.getWorkNo()).append(")").append("\n"); sb.append("源库位:").append(command.getSourceLocNo()).append("\n"); sb.append("目标站:").append(command.getStaNo()).append("\n"); if (!command.isEmptyMk()) { for (MatDto matDto : command.getMatDtos()) { sb.append("物料编码:").append(matDto.getMatNo()).append("\n"); sb.append("名称:").append(matDto.getMaknx()).append("\n"); sb.append("数量:").append(matDto.getCount()).append("\n"); sb.append("规格:").append(matDto.getSpecs()).append("\n"); } } sb.append("\n"); } stringBuffer.delete(0, stringBuffer.length()); stringBuffer.append(sb.toString()); errorReset(); } public void reset() { commandList = null; stringBuffer.delete(0, stringBuffer.length()); } public void error(String msg) { errorMsg.delete(0, errorMsg.length()); errorMsg.append(msg); } public void errorReset() { this.errorMsg.delete(0, errorMsg.length()); } @Override public void setLedMk(boolean mk) { this.ledMk = mk; } @Override public boolean isLedMk() { return false; } @Override public boolean connect() { return true; } @Override public void close() { } }