pa/pis系统消息类型作为操作参数
This commit is contained in:
parent
2e06dd9031
commit
4e07a65b6a
@ -1,6 +1,5 @@
|
|||||||
package club.joylink.rtss.services.iscs.interactive;
|
package club.joylink.rtss.services.iscs.interactive;
|
||||||
|
|
||||||
import club.joylink.rtss.constants.IscsSystem;
|
|
||||||
import club.joylink.rtss.exception.BusinessExceptionAssertEnum;
|
import club.joylink.rtss.exception.BusinessExceptionAssertEnum;
|
||||||
import club.joylink.rtss.services.audio.AudioResourcesService;
|
import club.joylink.rtss.services.audio.AudioResourcesService;
|
||||||
import club.joylink.rtss.services.voice.IVoiceService;
|
import club.joylink.rtss.services.voice.IVoiceService;
|
||||||
@ -11,7 +10,6 @@ import club.joylink.rtss.simulation.cbtc.data.map.MapElement;
|
|||||||
import club.joylink.rtss.simulation.cbtc.data.vr.VirtualRealityAudio;
|
import club.joylink.rtss.simulation.cbtc.data.vr.VirtualRealityAudio;
|
||||||
import club.joylink.rtss.simulation.cbtc.member.SimulationMember;
|
import club.joylink.rtss.simulation.cbtc.member.SimulationMember;
|
||||||
import club.joylink.rtss.vo.client.audio.AudioResourcesVO;
|
import club.joylink.rtss.vo.client.audio.AudioResourcesVO;
|
||||||
import club.joylink.rtss.vo.client.iscs.IscsAudioResourceVO;
|
|
||||||
import club.joylink.rtss.vo.client.iscs.PlayParamVO;
|
import club.joylink.rtss.vo.client.iscs.PlayParamVO;
|
||||||
import club.joylink.rtss.vo.client.iscs.systemRes.IscsSystemResourcesVO;
|
import club.joylink.rtss.vo.client.iscs.systemRes.IscsSystemResourcesVO;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
@ -33,17 +31,17 @@ public class IscsInteractiveService {
|
|||||||
BusinessExceptionAssertEnum.OPERATION_NOT_SUPPORTED.assertTrue(member != null && (member.isDispatcher() || member.isStationSupervisor()),
|
BusinessExceptionAssertEnum.OPERATION_NOT_SUPPORTED.assertTrue(member != null && (member.isDispatcher() || member.isStationSupervisor()),
|
||||||
"仅行调和行值可操作");
|
"仅行调和行值可操作");
|
||||||
BusinessExceptionAssertEnum.SYSTEM_EXCEPTION.assertNotNull(param.getResourceId(), "资源id不能为null");
|
BusinessExceptionAssertEnum.SYSTEM_EXCEPTION.assertNotNull(param.getResourceId(), "资源id不能为null");
|
||||||
IscsAudioResourceVO resourceVO = simulation.getIscsRepository().getIscsAudioResource(param.getResourceId());
|
AudioResourcesVO resourceVO = simulation.getIscsRepository().getAudioResource(param.getResourceId());
|
||||||
SimulationDataRepository repository = simulation.getRepository();
|
SimulationDataRepository repository = simulation.getRepository();
|
||||||
for (String code : param.getIscsDeviceCodes()) {
|
for (String code : param.getIscsDeviceCodes()) {
|
||||||
MapElement element = repository.getByCode(code);
|
MapElement element = repository.getByCode(code);
|
||||||
if (element instanceof Audio) {
|
if (element instanceof Audio) {
|
||||||
Audio audio = (Audio) element;
|
Audio audio = (Audio) element;
|
||||||
audio.updateResource(resourceVO);
|
audio.updateResource(resourceVO);
|
||||||
audio.updateState(getPaState(resourceVO, member));
|
audio.updateState(getPaState(param.getType(), member));
|
||||||
audio.updateRemain(Audio.DEFAULT_REMAIN);
|
audio.updateRemain(Audio.DEFAULT_REMAIN);
|
||||||
VirtualRealityAudio vrAudio = audio.getVrAudio();
|
VirtualRealityAudio vrAudio = audio.getVrAudio();
|
||||||
vrAudio.updateUrl(resourceVO.getAudioResourcesVO().getUrl());
|
vrAudio.updateUrl(resourceVO.getUrl());
|
||||||
vrAudio.control(VirtualRealityAudio.Command.PLAY);
|
vrAudio.control(VirtualRealityAudio.Command.PLAY);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -66,15 +64,14 @@ public class IscsInteractiveService {
|
|||||||
public String pisPlay(Simulation simulation, PlayParamVO param, SimulationMember member) {
|
public String pisPlay(Simulation simulation, PlayParamVO param, SimulationMember member) {
|
||||||
BusinessExceptionAssertEnum.OPERATION_NOT_SUPPORTED.assertTrue(member != null && (member.isDispatcher() || member.isStationSupervisor()),
|
BusinessExceptionAssertEnum.OPERATION_NOT_SUPPORTED.assertTrue(member != null && (member.isDispatcher() || member.isStationSupervisor()),
|
||||||
"仅行调和行值可操作");
|
"仅行调和行值可操作");
|
||||||
IscsAudioResourceVO resourceVO;
|
AudioResourcesVO resourceVO;
|
||||||
if (param.getResourceId() != null) {
|
if (!IscsSystemResourcesVO.Type.REAL_TIME.equals(param.getType())) {
|
||||||
resourceVO = simulation.getIscsRepository().getIscsAudioResource(param.getResourceId());
|
resourceVO = simulation.getIscsRepository().getAudioResource(param.getResourceId());
|
||||||
} else {
|
} else {
|
||||||
BusinessExceptionAssertEnum.OPERATION_NOT_SUPPORTED.assertHasText(param.getName(), "实时消息名称不能为空");
|
BusinessExceptionAssertEnum.OPERATION_NOT_SUPPORTED.assertHasText(param.getName(), "实时消息名称不能为空");
|
||||||
BusinessExceptionAssertEnum.OPERATION_NOT_SUPPORTED.assertHasText(param.getContent(), "实时消息内容不能为空");
|
BusinessExceptionAssertEnum.OPERATION_NOT_SUPPORTED.assertHasText(param.getContent(), "实时消息内容不能为空");
|
||||||
String url = iVoiceService.synthesis(param.getContent(), "0");
|
String url = iVoiceService.synthesis(param.getContent(), "0");
|
||||||
AudioResourcesVO audioResourcesVO = new AudioResourcesVO(param.getName(), param.getContent(), url);
|
resourceVO = new AudioResourcesVO(param.getName(), param.getContent(), url);
|
||||||
resourceVO = new IscsAudioResourceVO(audioResourcesVO, IscsSystem.PIS, IscsSystemResourcesVO.Type.REAL_TIME);
|
|
||||||
}
|
}
|
||||||
SimulationDataRepository repository = simulation.getRepository();
|
SimulationDataRepository repository = simulation.getRepository();
|
||||||
boolean play = false;
|
boolean play = false;
|
||||||
@ -84,13 +81,13 @@ public class IscsInteractiveService {
|
|||||||
Audio audio = (Audio) element;
|
Audio audio = (Audio) element;
|
||||||
audio.updateResource(resourceVO);
|
audio.updateResource(resourceVO);
|
||||||
VirtualRealityAudio vrAudio = audio.getVrAudio();
|
VirtualRealityAudio vrAudio = audio.getVrAudio();
|
||||||
vrAudio.updateUrl(resourceVO.getAudioResourcesVO().getUrl());
|
vrAudio.updateUrl(resourceVO.getUrl());
|
||||||
vrAudio.control(VirtualRealityAudio.Command.PLAY);
|
vrAudio.control(VirtualRealityAudio.Command.PLAY);
|
||||||
play = true;
|
play = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (play) {
|
if (play) {
|
||||||
return resourceVO.getAudioResourcesVO().getUrl();
|
return resourceVO.getUrl();
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
@ -107,24 +104,25 @@ public class IscsInteractiveService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private String getPaState(IscsAudioResourceVO resourcesVO, SimulationMember member) {
|
private String getPaState(IscsSystemResourcesVO.Type resourceType, SimulationMember member) {
|
||||||
boolean dispatcher = member.isDispatcher();
|
boolean dispatcher = member.isDispatcher();
|
||||||
if (IscsSystemResourcesVO.Type.BGM.equals(resourcesVO.getType())) {
|
switch (resourceType) {
|
||||||
return Audio.State.BGM;
|
case RECORDING:
|
||||||
|
if (dispatcher) {
|
||||||
|
return Audio.State.CENTER_NORMAL;
|
||||||
|
} else {
|
||||||
|
return Audio.State.STATION_NORMAL;
|
||||||
|
}
|
||||||
|
case EMERGENCY_RECORDING:
|
||||||
|
if (dispatcher) {
|
||||||
|
return Audio.State.CENTER_EMERGENCY;
|
||||||
|
} else {
|
||||||
|
return Audio.State.STATION_EMERGENCY;
|
||||||
|
}
|
||||||
|
case BGM:
|
||||||
|
return Audio.State.BGM;
|
||||||
|
default:
|
||||||
|
throw new IllegalStateException("Unexpected value: " + resourceType);
|
||||||
}
|
}
|
||||||
if (dispatcher) {
|
|
||||||
if (IscsSystemResourcesVO.Type.RECORDING.equals(resourcesVO.getType())) {
|
|
||||||
return Audio.State.CENTER_NORMAL;
|
|
||||||
} else if (IscsSystemResourcesVO.Type.EMERGENCY_RECORDING.equals(resourcesVO.getType())) {
|
|
||||||
return Audio.State.CENTER_EMERGENCY;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (IscsSystemResourcesVO.Type.RECORDING.equals(resourcesVO.getType())) {
|
|
||||||
return Audio.State.STATION_NORMAL;
|
|
||||||
} else if (IscsSystemResourcesVO.Type.EMERGENCY_RECORDING.equals(resourcesVO.getType())) {
|
|
||||||
return Audio.State.STATION_EMERGENCY;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
throw BusinessExceptionAssertEnum.SYSTEM_EXCEPTION.exception("消息类型异常");
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -4,7 +4,6 @@ import club.joylink.rtss.constants.IscsSystem;
|
|||||||
import club.joylink.rtss.exception.BusinessExceptionAssertEnum;
|
import club.joylink.rtss.exception.BusinessExceptionAssertEnum;
|
||||||
import club.joylink.rtss.simulation.cbtc.data.vo.iscs.IscsStatusVO;
|
import club.joylink.rtss.simulation.cbtc.data.vo.iscs.IscsStatusVO;
|
||||||
import club.joylink.rtss.vo.client.audio.AudioResourcesVO;
|
import club.joylink.rtss.vo.client.audio.AudioResourcesVO;
|
||||||
import club.joylink.rtss.vo.client.iscs.IscsAudioResourceVO;
|
|
||||||
import club.joylink.rtss.vo.client.iscs.systemRes.IscsSystemResourcesVO;
|
import club.joylink.rtss.vo.client.iscs.systemRes.IscsSystemResourcesVO;
|
||||||
import lombok.NoArgsConstructor;
|
import lombok.NoArgsConstructor;
|
||||||
import lombok.Setter;
|
import lombok.Setter;
|
||||||
@ -57,12 +56,12 @@ public class SimulationIscsDataRepository {
|
|||||||
return stream.collect(Collectors.toList());
|
return stream.collect(Collectors.toList());
|
||||||
}
|
}
|
||||||
|
|
||||||
public IscsAudioResourceVO getIscsAudioResource(long resourceId) {
|
public AudioResourcesVO getAudioResource(long resourceId) {
|
||||||
for (IscsSystemResourcesVO systemResource : systemResources) {
|
for (IscsSystemResourcesVO systemResource : systemResources) {
|
||||||
if (!CollectionUtils.isEmpty(systemResource.getResources())) {
|
if (!CollectionUtils.isEmpty(systemResource.getResources())) {
|
||||||
for (AudioResourcesVO resource : systemResource.getResources()) {
|
for (AudioResourcesVO resource : systemResource.getResources()) {
|
||||||
if (Objects.equals(resourceId, resource.getId())) {
|
if (Objects.equals(resourceId, resource.getId())) {
|
||||||
return new IscsAudioResourceVO(resource, systemResource.getSystem(), systemResource.getType());
|
return resource;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2,7 +2,7 @@ package club.joylink.rtss.simulation.cbtc.data.map;
|
|||||||
|
|
||||||
import club.joylink.rtss.constants.IscsSystem;
|
import club.joylink.rtss.constants.IscsSystem;
|
||||||
import club.joylink.rtss.simulation.cbtc.data.vr.VirtualRealityAudio;
|
import club.joylink.rtss.simulation.cbtc.data.vr.VirtualRealityAudio;
|
||||||
import club.joylink.rtss.vo.client.iscs.IscsAudioResourceVO;
|
import club.joylink.rtss.vo.client.audio.AudioResourcesVO;
|
||||||
import club.joylink.rtss.vo.client.iscs.device.IscsDeviceVO;
|
import club.joylink.rtss.vo.client.iscs.device.IscsDeviceVO;
|
||||||
import com.fasterxml.jackson.annotation.JsonIgnore;
|
import com.fasterxml.jackson.annotation.JsonIgnore;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
@ -24,7 +24,7 @@ public class Audio extends MapElement{
|
|||||||
|
|
||||||
private String state;
|
private String state;
|
||||||
|
|
||||||
private IscsAudioResourceVO resource;
|
private AudioResourcesVO resource;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 剩余播放时长/ms
|
* 剩余播放时长/ms
|
||||||
@ -50,7 +50,7 @@ public class Audio extends MapElement{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void updateResource(IscsAudioResourceVO resource) {
|
public void updateResource(AudioResourcesVO resource) {
|
||||||
this.resource = resource;
|
this.resource = resource;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,21 +0,0 @@
|
|||||||
package club.joylink.rtss.vo.client.iscs;
|
|
||||||
|
|
||||||
import club.joylink.rtss.constants.IscsSystem;
|
|
||||||
import club.joylink.rtss.vo.client.audio.AudioResourcesVO;
|
|
||||||
import club.joylink.rtss.vo.client.iscs.systemRes.IscsSystemResourcesVO;
|
|
||||||
import lombok.Getter;
|
|
||||||
|
|
||||||
@Getter
|
|
||||||
public class IscsAudioResourceVO {
|
|
||||||
private AudioResourcesVO audioResourcesVO;
|
|
||||||
|
|
||||||
private IscsSystem system;
|
|
||||||
|
|
||||||
private IscsSystemResourcesVO.Type type;
|
|
||||||
|
|
||||||
public IscsAudioResourceVO(AudioResourcesVO resource, IscsSystem system, IscsSystemResourcesVO.Type type) {
|
|
||||||
this.audioResourcesVO = resource;
|
|
||||||
this.system = system;
|
|
||||||
this.type = type;
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,10 +1,12 @@
|
|||||||
package club.joylink.rtss.vo.client.iscs;
|
package club.joylink.rtss.vo.client.iscs;
|
||||||
|
|
||||||
|
import club.joylink.rtss.vo.client.iscs.systemRes.IscsSystemResourcesVO;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.NoArgsConstructor;
|
import lombok.NoArgsConstructor;
|
||||||
import lombok.Setter;
|
import lombok.Setter;
|
||||||
|
|
||||||
import javax.validation.constraints.NotEmpty;
|
import javax.validation.constraints.NotEmpty;
|
||||||
|
import javax.validation.constraints.NotNull;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -14,6 +16,9 @@ import java.util.List;
|
|||||||
@Setter
|
@Setter
|
||||||
@NoArgsConstructor
|
@NoArgsConstructor
|
||||||
public class PlayParamVO {
|
public class PlayParamVO {
|
||||||
|
@NotNull(message = "类型不能为null")
|
||||||
|
private IscsSystemResourcesVO.Type type;
|
||||||
|
|
||||||
private Long resourceId;
|
private Long resourceId;
|
||||||
|
|
||||||
@NotEmpty(message = "设备编号不能为空")
|
@NotEmpty(message = "设备编号不能为空")
|
||||||
|
Loading…
Reference in New Issue
Block a user