1
20 小时以前 fb74f60f1d8397acf5251ae289e80ab8a056857f
src/main/java/com/zy/core/thread/RgvThread.java
@@ -5,6 +5,7 @@
import HslCommunication.Profinet.Siemens.SiemensPLCS;
import HslCommunication.Profinet.Siemens.SiemensS7Net;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.core.common.Cools;
import com.core.common.DateUtils;
import com.core.common.SpringUtils;
@@ -35,6 +36,7 @@
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import java.sql.Wrapper;
import java.text.MessageFormat;
import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
@@ -64,15 +66,17 @@
    //锁定标记
    private boolean PakMk = true;
    //入库标记
    private boolean PakIn = true;
    //出库标记
    private boolean PakOut = true;
    //根据距离跳过取货
    private boolean PakRgv = true;
    //接驳标记
    private boolean PakToCrn = true;
//    private boolean PakIn = true;
//    //出库标记
//    private boolean PakOut = true;
//    //根据距离跳过取货
//    private boolean PakRgv  = true;
//    //接驳标记
//    private boolean PakToCrn = true;
    // 任务锁定
    private boolean Paking = true;
    private boolean Paking  = true;
//    //连续任务下发
//    private boolean PakAll = true;
    public RgvThread(RgvSlave slave) {
        this.slave = slave;
@@ -234,6 +238,40 @@
            buffer[byteIndex] &= ~(1 << bitIndex); // 清零
        }
    }
    private void updateFlagInDb(String field, boolean value) {
        try {
            BasRgvService basRgvService = SpringUtils.getBean(BasRgvService.class);
            EntityWrapper<BasRgv> wrapper = new EntityWrapper<>();
            wrapper.eq("rgv_no", slave.getId());
            BasRgv entity = new BasRgv();
            switch (field) {
                case "pak_mk":    entity.setPakMk(value ? "1" : "0"); break;
                case "pak_in":    entity.setPakIn(value ? "1" : "0"); break;
                case "pak_out":   entity.setPakOut(value ? "1" : "0"); break;
                case "pak_rgv":   entity.setPakRgv(value ? "1" : "0"); break;
                case "pak_to_crn":entity.setPakToCrn(value ? "1" : "0"); break;
                case "paking":entity.setPaking(value ? "1" : "0"); break;
                case "pak_all":entity.setPakAll(value ? "1" : "0"); break;
                default:
                    log.warn("未知标志位字段: {}", field);
                    return;
            }
            basRgvService.update(entity, wrapper);
//            log.info("RGV标志位更新成功 [rgv_no:{}] {}={}", slave.getId(), field, value ? "1" : "0");
        } catch (Exception e) {
            log.error("更新RGV标志位异常 [rgv_no:{}] {}={} 错误:{}", slave.getId(), field, value, e.getMessage());
        }
    }
    public void setPakMk(boolean pakMk) {
        this.PakMk = pakMk;
        updateFlagInDb("pak_mk", pakMk);
    }
    /**
     * 读取状态
@@ -274,8 +312,7 @@
                rgvProtocol.setErr10(status3[1]);
                rgvProtocol.setErr11(status3[2]);
                rgvProtocol.setErr12(status3[3]);
                BasRgvMapService basRgvMapService = SpringUtils.getBean(BasRgvMapService.class);
//                BasRgvMapService basRgvMapService = SpringUtils.getBean(BasRgvMapService.class);
                OutputQueue.RGV.offer(MessageFormat.format("【{0}】[id:{1}] <<<<< 实时数据更新成功", DateUtils.convert(new Date()), slave.getId()));
                try {
                    // 根据实时信息更新数据库