红河财经现场部署

This commit is contained in:
thesai 2022-09-08 23:23:10 +08:00
parent 33217b868f
commit 52625cce1d
21 changed files with 284 additions and 41 deletions

View File

@ -4,9 +4,9 @@ import club.joylink.rtss.services.draftData.DraftMapDataHandleService;
import club.joylink.rtss.services.publishData.PublishMapDataHandler; import club.joylink.rtss.services.publishData.PublishMapDataHandler;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PutMapping; import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import java.util.LinkedHashMap;
/** /**
* 地图数据处理 * 地图数据处理
@ -35,4 +35,12 @@ public class MapDataHandleController {
public void signalShowDirection() { public void signalShowDirection() {
this.publishMapDataHandler.signalShowDirection(); this.publishMapDataHandler.signalShowDirection();
} }
/**
* 批量修改线路数据和ISCS的车站名
*/
@PutMapping("/{mapId}/stationName/mapAndIscs")
public void changeStationName(@PathVariable long mapId, @RequestBody LinkedHashMap<String, String> nameMap) {
this.publishMapDataHandler.changeStationName(mapId, nameMap);
}
} }

View File

@ -126,13 +126,15 @@ public class VirtualRealityIbpService implements IVirtualRealityIbpService {
break; break;
} }
case XXYS: { case XXYS: {
List<VirtualRealityIbp.IbpElement> czLights = ibp.query(VirtualRealityIbp.Mean.PSD_CZYX_LIGHT, false); // List<VirtualRealityIbp.IbpElement> czLights = ibp.query(VirtualRealityIbp.Mean.PSD_CZYX_LIGHT, false);
czLights.forEach(light -> light.orderTo(true)); // czLights.forEach(light -> light.orderTo(true));
ibp.query(VirtualRealityIbp.Mean.PSD_CZYX_LIGHT, false).orderTo(true);
break; break;
} }
case SXYS: { case SXYS: {
List<VirtualRealityIbp.IbpElement> czLights = ibp.query(VirtualRealityIbp.Mean.PSD_CZYX_LIGHT, true); // List<VirtualRealityIbp.IbpElement> czLights = ibp.query(VirtualRealityIbp.Mean.PSD_CZYX_LIGHT, true);
czLights.forEach(light -> light.orderTo(true)); // czLights.forEach(light -> light.orderTo(true));
ibp.query(VirtualRealityIbp.Mean.PSD_CZYX_LIGHT, true).orderTo(true);
break; break;
} }
// case PSD_HSJC: { // case PSD_HSJC: {

View File

@ -15,6 +15,7 @@ import club.joylink.rtss.vo.client.project.*;
import club.joylink.rtss.vo.client.project.gzb.GzbSignalConfigVO; import club.joylink.rtss.vo.client.project.gzb.GzbSignalConfigVO;
import club.joylink.rtss.vo.client.project.gzb.GzbSwitchConfigVO; import club.joylink.rtss.vo.client.project.gzb.GzbSwitchConfigVO;
import club.joylink.rtss.vo.client.project.hhcj.HhcjIbpConfigVO; import club.joylink.rtss.vo.client.project.hhcj.HhcjIbpConfigVO;
import club.joylink.rtss.vo.client.project.hhcj.HhcjPsdConfigVO;
import club.joylink.rtss.vo.client.project.richor.ZjdIbpConfigVO; import club.joylink.rtss.vo.client.project.richor.ZjdIbpConfigVO;
import club.joylink.rtss.vo.client.project.richor.ZjdPsdConfigVO; import club.joylink.rtss.vo.client.project.richor.ZjdPsdConfigVO;
import club.joylink.rtss.vo.client.project.richor.ZjdPslConfigVO; import club.joylink.rtss.vo.client.project.richor.ZjdPslConfigVO;
@ -486,6 +487,16 @@ public class DeviceServiceImpl implements DeviceService {
HhcjIbpConfigVO ibpConfigVO = new HhcjIbpConfigVO(); HhcjIbpConfigVO ibpConfigVO = new HhcjIbpConfigVO();
ibp.setConfig(ibpConfigVO.toJson()); ibp.setConfig(ibpConfigVO.toJson());
list.add(ibp); list.add(ibp);
// PSD
ProjectDevice psd = new ProjectDevice();
psd.setProjectCode(Project.RICHOR_HHCJ.name());
psd.setCode("hhcj-psd");
psd.setType(ProjectDeviceType.PSD.name());
psd.setCreator(accountVO.getId());
psd.setCreateTime(now);
HhcjPsdConfigVO psdConfigVO = new HhcjPsdConfigVO();
psd.setConfig(psdConfigVO.toJson());
list.add(psd);
return list; return list;
} }

View File

@ -1,12 +1,14 @@
package club.joylink.rtss.services.publishData; package club.joylink.rtss.services.publishData;
import club.joylink.rtss.constants.BusinessConsts;
import club.joylink.rtss.constants.MapStatus; import club.joylink.rtss.constants.MapStatus;
import club.joylink.rtss.dao.IscsDAO;
import club.joylink.rtss.dao.MapDataDAO; import club.joylink.rtss.dao.MapDataDAO;
import club.joylink.rtss.dao.MapInfoDAO; import club.joylink.rtss.dao.MapInfoDAO;
import club.joylink.rtss.entity.MapDataWithBLOBs; import club.joylink.rtss.entity.*;
import club.joylink.rtss.entity.MapInfo; import club.joylink.rtss.exception.BusinessExceptionAssertEnum;
import club.joylink.rtss.entity.MapInfoExample;
import club.joylink.rtss.services.IMapService; import club.joylink.rtss.services.IMapService;
import club.joylink.rtss.services.cache.ICacheService;
import club.joylink.rtss.simulation.cbtc.constant.SignalAspect; import club.joylink.rtss.simulation.cbtc.constant.SignalAspect;
import club.joylink.rtss.simulation.cbtc.constant.SignalModel; import club.joylink.rtss.simulation.cbtc.constant.SignalModel;
import club.joylink.rtss.simulation.cbtc.data.map.Signal; import club.joylink.rtss.simulation.cbtc.data.map.Signal;
@ -21,14 +23,12 @@ import club.joylink.rtss.vo.map.logic.MapRouteNewVO;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import javax.validation.constraints.NotBlank;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.function.Function;
import java.util.stream.Collectors;
@Service @Service
public class PublishMapDataHandler { public class PublishMapDataHandler {
@ -38,6 +38,10 @@ public class PublishMapDataHandler {
private MapInfoDAO mapInfoDAO; private MapInfoDAO mapInfoDAO;
@Autowired @Autowired
private MapDataDAO mapDataDAO; private MapDataDAO mapDataDAO;
@Autowired
private IscsDAO iscsDAO;
@Autowired
private ICacheService iCacheService;
public List<MapInfo> queryMapInfos() { public List<MapInfo> queryMapInfos() {
MapInfoExample example = new MapInfoExample(); MapInfoExample example = new MapInfoExample();
@ -207,4 +211,54 @@ public class PublishMapDataHandler {
mapInfoDAO.updateByPrimaryKeySelective(map); mapInfoDAO.updateByPrimaryKeySelective(map);
this.iMapService.removeCache(mapId); this.iMapService.removeCache(mapId);
} }
public void changeStationName(long mapId, Map<String, String> nameMap) {
// 修改地图数据
MapDataWithBLOBs mapData = getMapDataEntity(mapId);
String graphData = mapData.getGraphData();
for (Map.Entry<String, String> entry : nameMap.entrySet()) {
String k = entry.getKey();
String v = entry.getValue();
graphData = graphData.replace(k, v);
}
mapData.setGraphData(graphData);
mapDataDAO.updateByPrimaryKeyWithBLOBs(mapData);
// 修改ISCS数据
IscsExample iscsExample = new IscsExample();
iscsExample.createCriteria().andMapIdEqualTo(mapId);
List<Iscs> iscsList = iscsDAO.selectByExampleWithBLOBs(iscsExample);
BusinessExceptionAssertEnum.DATA_NOT_EXIST.assertCollectionNotEmpty(iscsList);
for (Iscs iscs : iscsList) {
String iscsGraphData = iscs.getGraphData();
for (Map.Entry<String, String> entry : nameMap.entrySet()) {
String k = entry.getKey();
String v = entry.getValue();
iscsGraphData = iscsGraphData.replace(k, v);
}
iscs.setGraphData(iscsGraphData);
iscsDAO.updateByPrimaryKeyWithBLOBs(iscs);
}
// 刷新缓存
iCacheService.remove(BusinessConsts.CachePrefix.Map + mapId);
iMapService.getMapDetail(mapId);
}
private MapDataWithBLOBs getMapDataEntity(long mapId) {
MapInfo mapInfo = mapInfoDAO.selectByPrimaryKey(mapId);
BusinessExceptionAssertEnum.DATA_NOT_EXIST.assertNotNull(mapInfo);
return getMapDataEntity(mapId, mapInfo.getVersion());
}
private MapDataWithBLOBs findMapDataEntity(long mapId, String version) {
MapDataExample example = new MapDataExample();
example.createCriteria().andMapIdEqualTo(mapId).andVersionEqualTo(version);
List<MapDataWithBLOBs> list = mapDataDAO.selectByExampleWithBLOBs(example);
return CollectionUtils.isEmpty(list) ? null : list.get(0);
}
private MapDataWithBLOBs getMapDataEntity(long mapId, String version) {
MapDataWithBLOBs entity = findMapDataEntity(mapId, version);
BusinessExceptionAssertEnum.DATA_NOT_EXIST.assertNotNull(entity);
return entity;
}
} }

View File

@ -10,6 +10,7 @@ import club.joylink.rtss.util.JsonUtils;
import club.joylink.rtss.vo.AccountVO; import club.joylink.rtss.vo.AccountVO;
import club.joylink.rtss.vo.LoginUserInfoVO; import club.joylink.rtss.vo.LoginUserInfoVO;
import club.joylink.rtss.vo.thirdAccount.ThirdInterfaceConfig; import club.joylink.rtss.vo.thirdAccount.ThirdInterfaceConfig;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.event.EventListener; import org.springframework.context.event.EventListener;
import org.springframework.http.HttpEntity; import org.springframework.http.HttpEntity;
@ -26,6 +27,7 @@ import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@Slf4j
@Service @Service
public class ThirdAccountDataSyncService { public class ThirdAccountDataSyncService {
@ -88,6 +90,8 @@ public class ThirdAccountDataSyncService {
String body = JsonUtils.writeValueAsString(syncRecordData); String body = JsonUtils.writeValueAsString(syncRecordData);
HttpEntity<String> httpEntity = new HttpEntity<>(body, headers); HttpEntity<String> httpEntity = new HttpEntity<>(body, headers);
ResponseEntity<String> responseEntity = this.restTemplate.postForEntity(url, httpEntity, String.class); ResponseEntity<String> responseEntity = this.restTemplate.postForEntity(url, httpEntity, String.class);
log.info("向第三方发送数据:" + body);
log.info("第三方同步数据接口Response" + responseEntity);
} }
private Map<String, Object> buildSyncUserSimulationRecordData(AccountVO accountVO, UserSimulationStats record) { private Map<String, Object> buildSyncUserSimulationRecordData(AccountVO accountVO, UserSimulationStats record) {

View File

@ -15,9 +15,10 @@ import club.joylink.rtss.simulation.cbtc.device.real.modbustcp.heb.device.Heb1Ib
import club.joylink.rtss.simulation.cbtc.device.real.modbustcp.heb.device.Heb1PscConfig; import club.joylink.rtss.simulation.cbtc.device.real.modbustcp.heb.device.Heb1PscConfig;
import club.joylink.rtss.simulation.cbtc.device.real.modbustcp.heb.device.Heb1PslConfig; import club.joylink.rtss.simulation.cbtc.device.real.modbustcp.heb.device.Heb1PslConfig;
import club.joylink.rtss.simulation.cbtc.device.real.modbustcp.hhcj.HhcjIbpConfig; import club.joylink.rtss.simulation.cbtc.device.real.modbustcp.hhcj.HhcjIbpConfig;
import club.joylink.rtss.simulation.cbtc.device.real.modbustcp.richor.ZjdIbpConfig; import club.joylink.rtss.simulation.cbtc.device.real.modbustcp.hhcj.HhcjPsdConfig;
import club.joylink.rtss.simulation.cbtc.device.real.modbustcp.richor.ZjdPslConfig;
import club.joylink.rtss.simulation.cbtc.device.real.modbustcp.xty.XtyPsdConfig; import club.joylink.rtss.simulation.cbtc.device.real.modbustcp.xty.XtyPsdConfig;
import club.joylink.rtss.simulation.cbtc.device.real.modbustcp.zjd.ZjdIbpConfig;
import club.joylink.rtss.simulation.cbtc.device.real.modbustcp.zjd.ZjdPslConfig;
import club.joylink.rtss.simulation.cbtc.device.real.udp.UDPRealDeviceThread; import club.joylink.rtss.simulation.cbtc.device.real.udp.UDPRealDeviceThread;
import club.joylink.rtss.simulation.cbtc.device.real.udp.sr.config.SrSectionConfig; import club.joylink.rtss.simulation.cbtc.device.real.udp.sr.config.SrSectionConfig;
import club.joylink.rtss.simulation.cbtc.device.real.udp.sr.config.SrSignalConfig; import club.joylink.rtss.simulation.cbtc.device.real.udp.sr.config.SrSignalConfig;
@ -171,6 +172,8 @@ public class ProjectJointSimulationServiceImpl implements ProjectJointSimulation
switch (config.getDeviceType()) { switch (config.getDeviceType()) {
case IBP: case IBP:
return ((HhcjIbpConfig) config).getConfigVO().getIbpCode(); return ((HhcjIbpConfig) config).getConfigVO().getIbpCode();
case PSD:
return ((HhcjPsdConfig) config).getConfigVO().getPsdCode();
} }
} }
} }

View File

@ -91,4 +91,8 @@ public abstract class ControllableVrDevice<C> extends VirtualRealityDevice {
* @param command * @param command
*/ */
protected abstract void doFinish(C command); protected abstract void doFinish(C command);
void setRemain(int remain) {
this.remain = remain;
}
} }

View File

@ -69,28 +69,44 @@ public class VirtualRealityScreenDoor extends ControllableVrDevice<VirtualRealit
this.fault = null; this.fault = null;
} }
// @Override
// protected boolean checkConditionBeforeControl(Operation command) {
// //已是关门到位状态发送关门指令依然会进入转换中状态导致门又开启遂加此限制
// switch (command) {
// case K:{
// if (this.isOpen2End())
// return false;
// break;
// }
// case G: {
// if (this.isLockAndClose())
// return false;
// break;
// }
// }
// return true;
// }
@Override @Override
protected boolean checkConditionBeforeControl(Operation command) { protected void doTurn() {
//已是关门到位状态发送关门指令依然会进入转换中状态导致门又开启遂加此限制 switch (getCommand()) {
switch (command) {
case K:{ case K:{
if (this.isOpen2End()) if (this.isOpen2End())
return false; setRemain(0);
else
setClose(false);
break; break;
} }
case G: { case G: {
if (this.isLockAndClose()) if (this.isLockAndClose())
return false; setRemain(0);
else
setOpen2End(false);
break; break;
} }
default:
throw new IllegalStateException("Unexpected value: " + getCommand());
} }
return true;
}
@Override
protected void doTurn() {
this.setClose(false);
this.open2End = false;
} }
@Override @Override

View File

@ -92,6 +92,9 @@ public class HhcjIbpServiceImpl implements RealDeviceService {
boolean w_psd_sx_sdcz = RealDeviceConfig.getBitOf(deviceStatus, configVO.getW_psd_sx_sdcz()); boolean w_psd_sx_sdcz = RealDeviceConfig.getBitOf(deviceStatus, configVO.getW_psd_sx_sdcz());
boolean w_psd_sx_hsjc = RealDeviceConfig.getBitOf(deviceStatus, configVO.getW_psd_sx_hsjc()); boolean w_psd_sx_hsjc = RealDeviceConfig.getBitOf(deviceStatus, configVO.getW_psd_sx_hsjc());
boolean w_psd_real_km = RealDeviceConfig.getBitOf(deviceStatus, configVO.getW_psd_real_km());
boolean w_psd_real_gm = RealDeviceConfig.getBitOf(deviceStatus, configVO.getW_psd_real_gm());
iVirtualRealityIbpService.updateOnOrOff(simulation, vrIbp, VirtualRealityIbp.Mean.kcLight, false, w_xh_xx_kc_light); iVirtualRealityIbpService.updateOnOrOff(simulation, vrIbp, VirtualRealityIbp.Mean.kcLight, false, w_xh_xx_kc_light);
iVirtualRealityIbpService.updateOnOrOff(simulation, vrIbp, VirtualRealityIbp.Mean.jjtcLight, false, w_xh_xx_jjtc_light); iVirtualRealityIbpService.updateOnOrOff(simulation, vrIbp, VirtualRealityIbp.Mean.jjtcLight, false, w_xh_xx_jjtc_light);
iVirtualRealityIbpService.updateOnOrOff(simulation, vrIbp, VirtualRealityIbp.Mean.SIGNAL_ALARM, null, w_xh_fmq); iVirtualRealityIbpService.updateOnOrOff(simulation, vrIbp, VirtualRealityIbp.Mean.SIGNAL_ALARM, null, w_xh_fmq);
@ -151,6 +154,8 @@ public class HhcjIbpServiceImpl implements RealDeviceService {
on = true; on = true;
} else if (element.isTurnOff()) { } else if (element.isTurnOff()) {
on = false; on = false;
} else {
continue;
} }
boolean currentIsOn = false; boolean currentIsOn = false;
Integer addr = null; Integer addr = null;
@ -276,7 +281,7 @@ public class HhcjIbpServiceImpl implements RealDeviceService {
case PRERESET_Z: case PRERESET_Z:
break; break;
} }
if (addr != null && on != null) { if (addr != null) {
plcGatewayService.checkEqualAndWriteSingleCoil(baseAddr, addr, currentIsOn, on, channel); plcGatewayService.checkEqualAndWriteSingleCoil(baseAddr, addr, currentIsOn, on, channel);
} }
} }
@ -535,6 +540,7 @@ public class HhcjIbpServiceImpl implements RealDeviceService {
boolean w_xfsb_gzwyb2 = RealDeviceConfig.getBitOf(deviceStatus, configVO.getW_xfsb_gzwyb2()); boolean w_xfsb_gzwyb2 = RealDeviceConfig.getBitOf(deviceStatus, configVO.getW_xfsb_gzwyb2());
boolean w_xfsb_gsw = RealDeviceConfig.getBitOf(deviceStatus, configVO.getW_xfsb_gsw()); boolean w_xfsb_gsw = RealDeviceConfig.getBitOf(deviceStatus, configVO.getW_xfsb_gsw());
boolean w_xfsb_dsw = RealDeviceConfig.getBitOf(deviceStatus, configVO.getW_xfsb_dsw()); boolean w_xfsb_dsw = RealDeviceConfig.getBitOf(deviceStatus, configVO.getW_xfsb_dsw());
boolean w_zj_real = RealDeviceConfig.getBitOf(deviceStatus, configVO.getW_zj_real());
// 按钮灯 // 按钮灯
plcGatewayService.checkEqualAndWriteSingleCoil(baseAddr, configVO.getW_qjsb_qd1A(), w_qjsb_qd1A, r_qjsb_qd1A, channel); plcGatewayService.checkEqualAndWriteSingleCoil(baseAddr, configVO.getW_qjsb_qd1A(), w_qjsb_qd1A, r_qjsb_qd1A, channel);
plcGatewayService.checkEqualAndWriteSingleCoil(baseAddr, configVO.getW_qjsb_qd1B(), w_qjsb_qd1B, r_qjsb_qd1B, channel); plcGatewayService.checkEqualAndWriteSingleCoil(baseAddr, configVO.getW_qjsb_qd1B(), w_qjsb_qd1B, r_qjsb_qd1B, channel);
@ -580,5 +586,7 @@ public class HhcjIbpServiceImpl implements RealDeviceService {
plcGatewayService.checkEqualAndWriteSingleCoil(baseAddr, configVO.getW_xfsb_gzwyb2(), w_xfsb_gzwyb2, r_xfsb_sd, channel); plcGatewayService.checkEqualAndWriteSingleCoil(baseAddr, configVO.getW_xfsb_gzwyb2(), w_xfsb_gzwyb2, r_xfsb_sd, channel);
plcGatewayService.checkEqualAndWriteSingleCoil(baseAddr, configVO.getW_xfsb_gsw(), w_xfsb_gsw, r_xfsb_sd, channel); plcGatewayService.checkEqualAndWriteSingleCoil(baseAddr, configVO.getW_xfsb_gsw(), w_xfsb_gsw, r_xfsb_sd, channel);
plcGatewayService.checkEqualAndWriteSingleCoil(baseAddr, configVO.getW_xfsb_dsw(), w_xfsb_dsw, r_xfsb_sd, channel); plcGatewayService.checkEqualAndWriteSingleCoil(baseAddr, configVO.getW_xfsb_dsw(), w_xfsb_dsw, r_xfsb_sd, channel);
// 闸机控制
plcGatewayService.checkEqualAndWriteSingleCoil(baseAddr, configVO.getW_zj_real(), w_zj_real, r_zj_jjsf, channel);
} }
} }

View File

@ -0,0 +1,21 @@
package club.joylink.rtss.simulation.cbtc.device.real.modbustcp.hhcj;
import club.joylink.rtss.simulation.cbtc.device.real.modbustcp.device.RealDeviceConfig;
import club.joylink.rtss.util.JsonUtils;
import club.joylink.rtss.vo.client.project.ProjectDeviceVO;
import club.joylink.rtss.vo.client.project.hhcj.HhcjPsdConfigVO;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class HhcjPsdConfig extends RealDeviceConfig {
private HhcjPsdConfigVO configVO;
public HhcjPsdConfig(ProjectDeviceVO projectDevice) {
super(projectDevice);
if (projectDevice != null) {
this.configVO = JsonUtils.read(projectDevice.getConfig(), HhcjPsdConfigVO.class);
}
}
}

View File

@ -0,0 +1,68 @@
package club.joylink.rtss.simulation.cbtc.device.real.modbustcp.hhcj;
import club.joylink.rtss.simulation.cbtc.Simulation;
import club.joylink.rtss.simulation.cbtc.constant.SimulationModule;
import club.joylink.rtss.simulation.cbtc.data.vr.VirtualRealityScreenDoor;
import club.joylink.rtss.simulation.cbtc.device.real.modbustcp.PlcGatewayService;
import club.joylink.rtss.simulation.cbtc.device.real.modbustcp.RealDeviceService;
import club.joylink.rtss.simulation.cbtc.device.real.modbustcp.device.PlcGateway;
import club.joylink.rtss.simulation.cbtc.device.real.modbustcp.device.RealDeviceConfig;
import club.joylink.rtss.vo.client.project.hhcj.HhcjPsdConfigVO;
import io.netty.buffer.ByteBuf;
import io.netty.channel.Channel;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class HhcjPsdServiceImpl implements RealDeviceService {
@Autowired
private PlcGatewayService plcGatewayService;
@Override
public boolean canHandle(RealDeviceConfig deviceConfig) {
return deviceConfig instanceof HhcjPsdConfig;
}
@Override
public void init(Simulation simulation, RealDeviceConfig deviceConfig) {
//不需要初始化逻辑因为所有的状态都来源于IBP盘上按钮的状态
}
@Override
public void handle(Simulation simulation, RealDeviceConfig deviceConfig, ByteBuf byteBuf) {
PlcGateway plcGateway = simulation.queryPlcGatewayDevice();
if (plcGateway == null)
return;
HhcjPsdConfig config = (HhcjPsdConfig) deviceConfig;
VirtualRealityScreenDoor vrPsd = (VirtualRealityScreenDoor) config.getMapElement();
if (vrPsd == null)
return;
HhcjPsdConfigVO configVO = config.getConfigVO();
ByteBuf deviceStatus = RealDeviceConfig.getDeviceCoilStatus(byteBuf, configVO.getAddr(), configVO.getQuantity());
boolean w_km = RealDeviceConfig.getBitOf(deviceStatus, configVO.getW_km());
boolean w_gm = RealDeviceConfig.getBitOf(deviceStatus, configVO.getW_gm());
int baseAddr = plcGateway.getConfig().getAddr() + configVO.getAddr();
Channel channel = plcGateway.getChannel();
boolean newKm;
boolean newGm;
if (vrPsd.isSettingOpen()) {
newKm = true;
newGm = false;
} else if (vrPsd.isSettingClose()) {
newKm = false;
newGm = true;
} else {
newKm = false;
newGm = false;
}
plcGatewayService.checkEqualAndWriteSingleCoil(baseAddr, configVO.getW_km(), w_km, newKm, channel);
plcGatewayService.checkEqualAndWriteSingleCoil(baseAddr, configVO.getW_gm(), w_gm, newGm, channel);
if (vrPsd.getRemain() > 0) {
vrPsd.turning(SimulationModule.VRD.getRateMs());
}
}
}

View File

@ -1,4 +1,4 @@
package club.joylink.rtss.simulation.cbtc.device.real.modbustcp.richor; package club.joylink.rtss.simulation.cbtc.device.real.modbustcp.zjd;
import club.joylink.rtss.simulation.cbtc.device.real.modbustcp.device.RealDeviceConfig; import club.joylink.rtss.simulation.cbtc.device.real.modbustcp.device.RealDeviceConfig;
import club.joylink.rtss.util.JsonUtils; import club.joylink.rtss.util.JsonUtils;

View File

@ -1,4 +1,4 @@
package club.joylink.rtss.simulation.cbtc.device.real.modbustcp.richor; package club.joylink.rtss.simulation.cbtc.device.real.modbustcp.zjd;
import club.joylink.rtss.services.IVirtualRealityIbpService; import club.joylink.rtss.services.IVirtualRealityIbpService;
import club.joylink.rtss.simulation.cbtc.CI.CiApiService; import club.joylink.rtss.simulation.cbtc.CI.CiApiService;

View File

@ -1,4 +1,4 @@
package club.joylink.rtss.simulation.cbtc.device.real.modbustcp.richor; package club.joylink.rtss.simulation.cbtc.device.real.modbustcp.zjd;
import club.joylink.rtss.simulation.cbtc.device.real.modbustcp.device.RealDeviceConfig; import club.joylink.rtss.simulation.cbtc.device.real.modbustcp.device.RealDeviceConfig;
import club.joylink.rtss.util.JsonUtils; import club.joylink.rtss.util.JsonUtils;

View File

@ -1,4 +1,4 @@
package club.joylink.rtss.simulation.cbtc.device.real.modbustcp.richor; package club.joylink.rtss.simulation.cbtc.device.real.modbustcp.zjd;
import club.joylink.rtss.simulation.cbtc.Simulation; import club.joylink.rtss.simulation.cbtc.Simulation;
import club.joylink.rtss.simulation.cbtc.data.SimulationIscsDataRepository; import club.joylink.rtss.simulation.cbtc.data.SimulationIscsDataRepository;

View File

@ -1,4 +1,4 @@
package club.joylink.rtss.simulation.cbtc.device.real.modbustcp.richor; package club.joylink.rtss.simulation.cbtc.device.real.modbustcp.zjd;
import club.joylink.rtss.simulation.cbtc.device.real.modbustcp.device.RealDeviceConfig; import club.joylink.rtss.simulation.cbtc.device.real.modbustcp.device.RealDeviceConfig;
import club.joylink.rtss.util.JsonUtils; import club.joylink.rtss.util.JsonUtils;

View File

@ -1,4 +1,4 @@
package club.joylink.rtss.simulation.cbtc.device.real.modbustcp.richor; package club.joylink.rtss.simulation.cbtc.device.real.modbustcp.zjd;
import club.joylink.rtss.services.psl.IVirtualRealityPslService; import club.joylink.rtss.services.psl.IVirtualRealityPslService;
import club.joylink.rtss.simulation.cbtc.CI.device.CiStandService; import club.joylink.rtss.simulation.cbtc.CI.device.CiStandService;

View File

@ -10,12 +10,13 @@ import club.joylink.rtss.simulation.cbtc.device.real.modbustcp.gzb.GzbSignalConf
import club.joylink.rtss.simulation.cbtc.device.real.modbustcp.gzb.GzbSwitchConfig; import club.joylink.rtss.simulation.cbtc.device.real.modbustcp.gzb.GzbSwitchConfig;
import club.joylink.rtss.simulation.cbtc.device.real.modbustcp.heb.device.*; import club.joylink.rtss.simulation.cbtc.device.real.modbustcp.heb.device.*;
import club.joylink.rtss.simulation.cbtc.device.real.modbustcp.hhcj.HhcjIbpConfig; import club.joylink.rtss.simulation.cbtc.device.real.modbustcp.hhcj.HhcjIbpConfig;
import club.joylink.rtss.simulation.cbtc.device.real.modbustcp.richor.ZjdIbpConfig; import club.joylink.rtss.simulation.cbtc.device.real.modbustcp.hhcj.HhcjPsdConfig;
import club.joylink.rtss.simulation.cbtc.device.real.modbustcp.richor.ZjdPsdConfig;
import club.joylink.rtss.simulation.cbtc.device.real.modbustcp.richor.ZjdPslConfig;
import club.joylink.rtss.simulation.cbtc.device.real.modbustcp.sdy.SdyPsdConfig; import club.joylink.rtss.simulation.cbtc.device.real.modbustcp.sdy.SdyPsdConfig;
import club.joylink.rtss.simulation.cbtc.device.real.modbustcp.sdy.SdyPslConfig; import club.joylink.rtss.simulation.cbtc.device.real.modbustcp.sdy.SdyPslConfig;
import club.joylink.rtss.simulation.cbtc.device.real.modbustcp.xty.XtyPsdConfig; import club.joylink.rtss.simulation.cbtc.device.real.modbustcp.xty.XtyPsdConfig;
import club.joylink.rtss.simulation.cbtc.device.real.modbustcp.zjd.ZjdIbpConfig;
import club.joylink.rtss.simulation.cbtc.device.real.modbustcp.zjd.ZjdPsdConfig;
import club.joylink.rtss.simulation.cbtc.device.real.modbustcp.zjd.ZjdPslConfig;
import club.joylink.rtss.simulation.cbtc.device.real.udp.UDPClientConfig; import club.joylink.rtss.simulation.cbtc.device.real.udp.UDPClientConfig;
import club.joylink.rtss.simulation.cbtc.device.real.udp.UDPLowConfig; import club.joylink.rtss.simulation.cbtc.device.real.udp.UDPLowConfig;
import club.joylink.rtss.simulation.cbtc.device.real.udp.sr.config.SrSectionConfig; import club.joylink.rtss.simulation.cbtc.device.real.udp.sr.config.SrSectionConfig;
@ -136,6 +137,9 @@ public class ProjectDeviceVO {
case IBP: case IBP:
list.add(new HhcjIbpConfig(deviceVO)); list.add(new HhcjIbpConfig(deviceVO));
break; break;
case PSD:
list.add(new HhcjPsdConfig(deviceVO));
break;
case PLC_GATEWAY: case PLC_GATEWAY:
list.add(new PlcGateway(deviceVO)); list.add(new PlcGateway(deviceVO));
break; break;

View File

@ -532,6 +532,16 @@ public class HhcjIbpConfigVO extends RealConfigVO {
*/ */
private Integer w_sdtf_cthbm11M10 = 140; private Integer w_sdtf_cthbm11M10 = 140;
/**
* 屏蔽门-实体-开门
*/
private Integer w_psd_real_km = 144;
/**
* 屏蔽门-实体-关门
*/
private Integer w_psd_real_gm = 145;
/** /**
* 车站环控-恢复正常按钮 * 车站环控-恢复正常按钮
*/ */
@ -959,6 +969,11 @@ public class HhcjIbpConfigVO extends RealConfigVO {
*/ */
private Integer w_xfsb_dsw = 292; private Integer w_xfsb_dsw = 292;
/**
* 闸机-实体设备控制
*/
private Integer w_zj_real = 296;
public HhcjIbpConfigVO() { public HhcjIbpConfigVO() {
super(0, 304); super(0, 304);
} }

View File

@ -0,0 +1,25 @@
package club.joylink.rtss.vo.client.project.hhcj;
import club.joylink.rtss.vo.client.project.RealConfigVO;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class HhcjPsdConfigVO extends RealConfigVO {
private String psdCode = "Psd87821";
/**
* PLC网关的144
*/
private Integer w_km = 144;
/**
* PLC网关的145
*/
private Integer w_gm = 145;
public HhcjPsdConfigVO() {
super(0, 304);
}
}

View File

@ -95,9 +95,9 @@ springfox:
spring: spring:
profiles: dev profiles: dev
datasource: datasource:
url: jdbc:mysql://192.168.3.233:3306/joylink?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true url: jdbc:mysql://localhost:3306/joylink?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
username: root username: root
password: joylink0503 password: root
tencent-cloud: tencent-cloud:
allow-send: false allow-send: false
@ -190,9 +190,9 @@ common:
spring: spring:
profiles: local profiles: local
datasource: datasource:
url: jdbc:mysql://192.168.3.233:3306/joylink?useSSL=false&characterEncoding=utf-8&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true url: jdbc:mysql://192.168.0.254:3306/joylink?useSSL=false&characterEncoding=utf-8&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
username: root username: root
password: joylink0503 password: localdb
tencent-cloud: tencent-cloud:
allow-send: false allow-send: false