#
zjj
2024-06-21 9372f61dcb41eeb2e09871caefce0f764d6ab021
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/impl/SiemensDevpThread.java
@@ -17,6 +17,8 @@
import com.zy.asrs.wcs.rcs.News;
import com.zy.asrs.wcs.rcs.cache.OutputQueue;
import com.zy.asrs.wcs.rcs.entity.Device;
import com.zy.asrs.wcs.rcs.model.dto.WorkModeTypeDto;
import com.zy.asrs.wcs.rcs.model.enums.WorkModeType;
import com.zy.asrs.wcs.rcs.model.protocol.StaProtocol;
import com.zy.asrs.wcs.rcs.thread.DevpThread;
import lombok.extern.slf4j.Slf4j;
@@ -44,9 +46,21 @@
     */
    private int barcodeSize = 2;
    /**
     * 入出库模式
     * 0:未知
     * 1:入库启动中
     * 2.入库模式
     * 3.出库启动中 (不能生成入库工作档)
     * 4.出库模式
     */
    private Map<Integer, WorkModeTypeDto> workModeTypes = new ConcurrentHashMap<>();
    public SiemensDevpThread(Device device, RedisUtil redisUtil) {
        this.device = device;
        this.redisUtil = redisUtil;
        workModeTypes.put(101, new WorkModeTypeDto(101, WorkModeType.NONE, "DB1001.120"));
    }
    private ArrayList<BasConveyorSta> getStaNo() {
@@ -287,4 +301,29 @@
            staProtocol.setPakMk(pakMk);
        }
    }
    private void updateWorkMode() {
        for (Map.Entry<Integer, WorkModeTypeDto> entry : workModeTypes.entrySet()) {
            WorkModeTypeDto workModeTypeDto = entry.getValue();
            WorkModeType workModeType = workModeTypeDto.getWorkModeType();
            if (workModeType != WorkModeType.NONE) {
                if (!siemensS7Net.Write(workModeTypeDto.getAddress(), workModeType.id).IsSuccess) {
                    OutputQueue.DEVP.offer(MessageFormat.format("写入输送线{1}入出库模式失败。输送线编号={0}", device.getId(), workModeTypeDto.getSiteId()));
                    log.error("写入输送线{1}入出库模式失败。输送线编号={0}", device.getId(), workModeTypeDto.getSiteId());
                }
            }
        }
    }
    @Override
    public boolean switchWorkMode(int siteId, int workMode) {
        WorkModeTypeDto workModeTypeDto = workModeTypes.get(siteId);
        if(workModeTypeDto == null) {
            return false;
        }
        workModeTypeDto.setWorkModeType(WorkModeType.get((short) workMode));
        workModeTypes.put(siteId, workModeTypeDto);
        return false;
    }
}