yeg
6 天以前 a04222c873e5e55f48c8d33b5c0bc46fa524ac8d
battery-business/src/main/java/com/battery/business/service/impl/TDetectionCabinetServiceImpl.java
@@ -22,6 +22,7 @@
import com.battery.business.service.ITDetectionCabinetService;
import com.battery.device.api.discovery.DeviceDiscoveryCandidateStore;
import com.battery.device.api.discovery.DeviceDiscoveryCandidateStore.CabinetCandidate;
import com.battery.device.api.discovery.DeviceDiscoveryCandidateStore.ChannelCandidate;
import com.battery.device.api.model.DeviceWorkStatus;
/**
@@ -197,7 +198,7 @@
                value.setDevid(channel.identity().devid());
                value.setSubdevid(channel.identity().subdevid());
                value.setChlid(channel.identity().chlid());
                value.setDisplayNo(channel.identity().subdevid() + "-" + channel.identity().chlid());
                value.setDisplayNo(channelDisplayNo(channel));
                value.setOnlineStatus(channel.online() ? "ONLINE" : "OFFLINE");
                value.setWorkStatus(persistedWorkStatus(channel.workStatus(), channel.online()));
                value.setLastSeenAtUtc(null);
@@ -209,7 +210,8 @@
                    candidate.online());
            candidate.channels().forEach(channel -> detectionCabinetMapper.updateRegisteredChannelObservation(
                    candidate.adapterCode(), channel.identity().devtype(), channel.identity().devid(),
                    channel.identity().subdevid(), channel.identity().chlid(), channel.online() ? "ONLINE" : "OFFLINE",
                    channel.identity().subdevid(), channel.identity().chlid(), channelDisplayNo(channel),
                    channel.online() ? "ONLINE" : "OFFLINE",
                    channel.online() ? persistedWorkStatus(channel.workStatus(), true) : "UNOBSERVABLE",
                    channel.observedAt(), channel.online()));
            return rows;
@@ -432,6 +434,17 @@
        return adapterCode + "-" + devtype + "-" + devid;
    }
    /**
     * 通道在界面上的显示号:来源自己有叫法就用它(操作员拿它跟厂商软件对上),
     * 否则回退到身份里的「单元-通道」。显示号只是展示,不参与通道身份。
     */
    static String channelDisplayNo(ChannelCandidate channel)
    {
        String declared = channel.sourceDisplayNo();
        return declared == null || declared.isBlank()
                ? channel.identity().subdevid() + "-" + channel.identity().chlid() : declared.trim();
    }
    /** 将设备观测状态转换为最终数据库允许的通道事实状态。 */
    private String persistedWorkStatus(DeviceWorkStatus status, boolean online)
    {