|
@@ -2,7 +2,7 @@ package com.hdkj.lt.bf.service.impl;
|
|
|
|
|
|
|
|
import cn.hutool.core.date.DatePattern;
|
|
import cn.hutool.core.date.DatePattern;
|
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
|
-import com.alibaba.fastjson.JSON;
|
|
|
|
|
|
|
+import com.alibaba.fastjson2.JSON;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
import com.hdkj.hussar.ApiResponse;
|
|
import com.hdkj.hussar.ApiResponse;
|
|
|
import com.hdkj.lt.base.constants.CommonConstant;
|
|
import com.hdkj.lt.base.constants.CommonConstant;
|
|
@@ -11,6 +11,8 @@ import com.hdkj.lt.base.enums.CommonUnitEnum;
|
|
|
import com.hdkj.lt.base.exception.ExceptionCast;
|
|
import com.hdkj.lt.base.exception.ExceptionCast;
|
|
|
import com.hdkj.lt.bf.adapter.SiStateEstimationClient;
|
|
import com.hdkj.lt.bf.adapter.SiStateEstimationClient;
|
|
|
import com.hdkj.lt.bf.entity.FhzgPlanPowerCut;
|
|
import com.hdkj.lt.bf.entity.FhzgPlanPowerCut;
|
|
|
|
|
+import com.hdkj.lt.bf.entity.FhzgSeCurrentEvent;
|
|
|
|
|
+import com.hdkj.lt.bf.entity.FhzgSeEventStateEstimation;
|
|
|
import com.hdkj.lt.bf.entity.dto.BeakerStatusDTO;
|
|
import com.hdkj.lt.bf.entity.dto.BeakerStatusDTO;
|
|
|
import com.hdkj.lt.bf.entity.dto.FhzgPlanTransferSchemeDTO;
|
|
import com.hdkj.lt.bf.entity.dto.FhzgPlanTransferSchemeDTO;
|
|
|
import com.hdkj.lt.bf.entity.dto.SwitchOrTransformerDTO;
|
|
import com.hdkj.lt.bf.entity.dto.SwitchOrTransformerDTO;
|
|
@@ -22,6 +24,7 @@ import com.hdkj.lt.core.bizms.modle.dto.StateEstimation;
|
|
|
import com.hdkj.lt.core.bizms.modle.po.DwdShbDsFeederBase;
|
|
import com.hdkj.lt.core.bizms.modle.po.DwdShbDsFeederBase;
|
|
|
import com.hdkj.lt.core.bizms.modle.po.FeederTopo;
|
|
import com.hdkj.lt.core.bizms.modle.po.FeederTopo;
|
|
|
import com.hdkj.lt.core.bizms.modle.po.FhzgSwitchProtectionSettings;
|
|
import com.hdkj.lt.core.bizms.modle.po.FhzgSwitchProtectionSettings;
|
|
|
|
|
+import com.hdkj.lt.core.bizms.modle.po.Jxz;
|
|
|
import com.hdkj.lt.core.bizms.modle.po.fault.FaultPowerCut;
|
|
import com.hdkj.lt.core.bizms.modle.po.fault.FaultPowerCut;
|
|
|
import com.hdkj.lt.core.bizms.modle.po.plan.FhzgInfoBreakerSvgAfter;
|
|
import com.hdkj.lt.core.bizms.modle.po.plan.FhzgInfoBreakerSvgAfter;
|
|
|
import com.hdkj.lt.core.bizms.modle.po.plan.FhzgPlanTransferScheme;
|
|
import com.hdkj.lt.core.bizms.modle.po.plan.FhzgPlanTransferScheme;
|
|
@@ -30,6 +33,7 @@ import com.hdkj.lt.core.bizms.modle.request.StateEstimationRequest;
|
|
|
import com.hdkj.lt.core.plugins.thread.MultiThreadExecuteService;
|
|
import com.hdkj.lt.core.plugins.thread.MultiThreadExecuteService;
|
|
|
import com.hdkj.lt.core.sys.dao.DwdShbDsFeederBaseMapper;
|
|
import com.hdkj.lt.core.sys.dao.DwdShbDsFeederBaseMapper;
|
|
|
import com.hdkj.lt.core.sys.dao.FhzgOrganSuffixMapper;
|
|
import com.hdkj.lt.core.sys.dao.FhzgOrganSuffixMapper;
|
|
|
|
|
+import com.hdkj.lt.core.sys.dao.JxzMapper;
|
|
|
import com.hdkj.lt.core.sys.service.DwdShbDsFeederBaseService;
|
|
import com.hdkj.lt.core.sys.service.DwdShbDsFeederBaseService;
|
|
|
import com.hdkj.lt.core.sys.service.SwitchProtectionSettingsService;
|
|
import com.hdkj.lt.core.sys.service.SwitchProtectionSettingsService;
|
|
|
import com.hdkj.lt.feign.IStateEstimationApiClient;
|
|
import com.hdkj.lt.feign.IStateEstimationApiClient;
|
|
@@ -38,6 +42,7 @@ import com.hdkj.lt.modle.dto.jsty.AllSwitchInfoListDTO;
|
|
|
import lombok.RequiredArgsConstructor;
|
|
import lombok.RequiredArgsConstructor;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.apache.commons.collections4.CollectionUtils;
|
|
import org.apache.commons.collections4.CollectionUtils;
|
|
|
|
|
+import org.apache.commons.compress.utils.Lists;
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.data.redis.core.Cursor;
|
|
import org.springframework.data.redis.core.Cursor;
|
|
@@ -94,7 +99,8 @@ public class FhzgSvgBreakersServiceImpl implements FhzgSvgBreakersService {
|
|
|
private RedisTemplate<String, Object> redisTemplate;
|
|
private RedisTemplate<String, Object> redisTemplate;
|
|
|
@Autowired
|
|
@Autowired
|
|
|
MultiThreadExecuteService multiThreadExecuteService;
|
|
MultiThreadExecuteService multiThreadExecuteService;
|
|
|
-
|
|
|
|
|
|
|
+ private final FhzgSeEventStateEstimationMapper stateEstimationMapper;
|
|
|
|
|
+ private final JxzMapper jxzMapper;
|
|
|
|
|
|
|
|
private static final DateTimeFormatter TIME_FORMATTER =
|
|
private static final DateTimeFormatter TIME_FORMATTER =
|
|
|
DateTimeFormatter.ofPattern(DatePattern.NORM_DATETIME_PATTERN);
|
|
DateTimeFormatter.ofPattern(DatePattern.NORM_DATETIME_PATTERN);
|
|
@@ -720,28 +726,46 @@ public class FhzgSvgBreakersServiceImpl implements FhzgSvgBreakersService {
|
|
|
@Override
|
|
@Override
|
|
|
public BeakerSvgInfoVO getBeakerSvgInfoVOByPsrId(BeakerStatusDTO dto) {
|
|
public BeakerSvgInfoVO getBeakerSvgInfoVOByPsrId(BeakerStatusDTO dto) {
|
|
|
List<StateEstimation.StateEstimationSwitchResult> periodSwitchSeResult = new ArrayList<>();
|
|
List<StateEstimation.StateEstimationSwitchResult> periodSwitchSeResult = new ArrayList<>();
|
|
|
- DwdShbDsFeederBase dwdShbDsFeederBase = dwdShbDsFeederBaseService.getByPsrId(dto.getLinePsrId());
|
|
|
|
|
|
|
+ String feederId = dto.getLinePsrId();
|
|
|
|
|
+ DwdShbDsFeederBase dwdShbDsFeederBase = dwdShbDsFeederBaseService.getByPsrId(feederId);
|
|
|
if (ObjectUtil.isNull(dwdShbDsFeederBase)) {
|
|
if (ObjectUtil.isNull(dwdShbDsFeederBase)) {
|
|
|
ExceptionCast.cast("线路不存在");
|
|
ExceptionCast.cast("线路不存在");
|
|
|
}
|
|
}
|
|
|
// 调用状态估算
|
|
// 调用状态估算
|
|
|
StateEstimation s = null;
|
|
StateEstimation s = null;
|
|
|
//判断是否需要获取计划或故障数据
|
|
//判断是否需要获取计划或故障数据
|
|
|
- DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
|
|
|
|
|
- s = JSON.parseObject(JSON.toJSONString(redisTemplate.opsForValue().get(dto.getLinePsrId() + dto.getTime() + "zg")), StateEstimation.class);
|
|
|
|
|
- if (s != null) {
|
|
|
|
|
- periodSwitchSeResult = s.getPeriodSwitchSeResult();
|
|
|
|
|
- } else {
|
|
|
|
|
- try {
|
|
|
|
|
- periodSwitchSeResult = iStateEstimationApiClient.queryByFeederSave(StateEstimationRequest.builder()
|
|
|
|
|
- .psrIds(Collections.singletonList(dto.getLinePsrId()))
|
|
|
|
|
- .containerCode(Collections.singletonList(CommonConstant.SWITCH))
|
|
|
|
|
- .startTime(dto.getTime())
|
|
|
|
|
- .endTime(dto.getTime())
|
|
|
|
|
- .isAuto(Boolean.FALSE)
|
|
|
|
|
- .build()).getData().getPeriodSwitchSeResult();
|
|
|
|
|
- } catch (Exception e) {
|
|
|
|
|
- e.printStackTrace();
|
|
|
|
|
|
|
+ String eventId = dto.getEventId();
|
|
|
|
|
+ if(StringUtils.isNotEmpty(eventId)){
|
|
|
|
|
+ List<FhzgSeEventStateEstimation> estimationList = stateEstimationMapper.selectList(
|
|
|
|
|
+ new LambdaQueryWrapper<FhzgSeEventStateEstimation>()
|
|
|
|
|
+ .eq(FhzgSeEventStateEstimation::getEventId, eventId)
|
|
|
|
|
+ .eq(FhzgSeEventStateEstimation::getFeederId, feederId));
|
|
|
|
|
+ if(CollectionUtils.size(estimationList) > 0){
|
|
|
|
|
+ FhzgSeEventStateEstimation estimation = estimationList.get(0);
|
|
|
|
|
+ String stateEstimationJson = estimation.getStateEstimationJson();
|
|
|
|
|
+ if(StringUtils.isNotEmpty(stateEstimationJson)){
|
|
|
|
|
+ s = JSON.parseObject(stateEstimationJson, StateEstimation.class);
|
|
|
|
|
+ if(s != null){
|
|
|
|
|
+ periodSwitchSeResult = s.getPeriodSwitchSeResult();
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }else {
|
|
|
|
|
+ s = JSON.parseObject(JSON.toJSONString(redisTemplate.opsForValue().get(feederId + dto.getTime() + "zg")), StateEstimation.class);
|
|
|
|
|
+ if (s != null) {
|
|
|
|
|
+ periodSwitchSeResult = s.getPeriodSwitchSeResult();
|
|
|
|
|
+ } else {
|
|
|
|
|
+ try {
|
|
|
|
|
+ periodSwitchSeResult = iStateEstimationApiClient.queryByFeederSave(StateEstimationRequest.builder()
|
|
|
|
|
+ .psrIds(Collections.singletonList(dto.getLinePsrId()))
|
|
|
|
|
+ .containerCode(Collections.singletonList(CommonConstant.SWITCH))
|
|
|
|
|
+ .startTime(dto.getTime())
|
|
|
|
|
+ .endTime(dto.getTime())
|
|
|
|
|
+ .isAuto(Boolean.FALSE)
|
|
|
|
|
+ .build()).getData().getPeriodSwitchSeResult();
|
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
|
+ log.error("远程调用异常!",e);
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
BeakerSvgInfoVO beakerSvgInfoVO = BeakerSvgInfoVO.builder().breakerPsrId(dto.getPsrId()).build();
|
|
BeakerSvgInfoVO beakerSvgInfoVO = BeakerSvgInfoVO.builder().breakerPsrId(dto.getPsrId()).build();
|
|
@@ -763,7 +787,7 @@ public class FhzgSvgBreakersServiceImpl implements FhzgSvgBreakersService {
|
|
|
exception.printStackTrace();
|
|
exception.printStackTrace();
|
|
|
}
|
|
}
|
|
|
if (Objects.equals(e.getIsAuto(), "true")) {
|
|
if (Objects.equals(e.getIsAuto(), "true")) {
|
|
|
- beakerSvgInfoVO.setLcs(BeakerStatusInfoVO.builder()
|
|
|
|
|
|
|
+ beakerSvgInfoVO.setLcs(BeakerStatusInfoVO.builder().breakerPsrId(e.getPsrId())
|
|
|
.breakerPsrId(dto.getPsrId())
|
|
.breakerPsrId(dto.getPsrId())
|
|
|
.punit(CommonUnitEnum.P.getCode())
|
|
.punit(CommonUnitEnum.P.getCode())
|
|
|
.qunit(CommonUnitEnum.Q.getCode())
|
|
.qunit(CommonUnitEnum.Q.getCode())
|
|
@@ -776,7 +800,7 @@ public class FhzgSvgBreakersServiceImpl implements FhzgSvgBreakersService {
|
|
|
.status(e.getSeiStatuss().get(0))
|
|
.status(e.getSeiStatuss().get(0))
|
|
|
.build());
|
|
.build());
|
|
|
}
|
|
}
|
|
|
- beakerSvgInfoVO.setZgs(BeakerStatusInfoVO.builder()
|
|
|
|
|
|
|
+ beakerSvgInfoVO.setZgs(BeakerStatusInfoVO.builder().breakerPsrId(e.getPsrId())
|
|
|
.breakerPsrId(dto.getPsrId())
|
|
.breakerPsrId(dto.getPsrId())
|
|
|
.punit(CommonUnitEnum.P.getCode())
|
|
.punit(CommonUnitEnum.P.getCode())
|
|
|
.qunit(CommonUnitEnum.Q.getCode())
|
|
.qunit(CommonUnitEnum.Q.getCode())
|
|
@@ -928,6 +952,139 @@ public class FhzgSvgBreakersServiceImpl implements FhzgSvgBreakersService {
|
|
|
return null;
|
|
return null;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public List<BeakerStatusInfoVO> getBreakerStateEstimationInfo(BeakerStatusDTO dto) {
|
|
|
|
|
+ List<BeakerStatusInfoVO> beakerStatusInfoVOS = new ArrayList<>();
|
|
|
|
|
+ String eventId = dto.getEventId();
|
|
|
|
|
+ List<StateEstimation.StateEstimationSwitchResult> ss = new ArrayList<>();
|
|
|
|
|
+ List<StateEstimation.StateEstimationSwitchResult> periodSwitchSeResult = new ArrayList<>();
|
|
|
|
|
+ StateEstimation s = null;
|
|
|
|
|
+ if(StringUtils.isNotEmpty(eventId)){
|
|
|
|
|
+ //获取表中历史状估数据
|
|
|
|
|
+ List<FhzgSeEventStateEstimation> estimationList = stateEstimationMapper.selectList(
|
|
|
|
|
+ new LambdaQueryWrapper<FhzgSeEventStateEstimation>().eq(FhzgSeEventStateEstimation::getEventId, eventId));
|
|
|
|
|
+ if(CollectionUtils.size(estimationList) > 0){
|
|
|
|
|
+ estimationList.forEach(estimation -> {
|
|
|
|
|
+ StateEstimation se = null;
|
|
|
|
|
+ String stateEstimationJson = estimation.getStateEstimationJson();
|
|
|
|
|
+ if(StringUtils.isNotEmpty(stateEstimationJson)){
|
|
|
|
|
+ se = JSON.parseObject(stateEstimationJson, StateEstimation.class);
|
|
|
|
|
+ if(se != null){
|
|
|
|
|
+ List<StateEstimation.StateEstimationSwitchResult> switchSeResult = se.getPeriodSwitchSeResult();
|
|
|
|
|
+ if (CollectionUtils.isNotEmpty(switchSeResult)) {
|
|
|
|
|
+ periodSwitchSeResult.addAll(switchSeResult);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ });
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ }else {
|
|
|
|
|
+ //实时查询
|
|
|
|
|
+ // 1. 查询接线组线路
|
|
|
|
|
+ String feederId = dto.getLinePsrId();
|
|
|
|
|
+ List<Jxz> jxzList = jxzMapper.queryJxzXl(feederId);
|
|
|
|
|
+ List<String> groupFeederIds = jxzList.stream()
|
|
|
|
|
+ .map(Jxz::getFeederId)
|
|
|
|
|
+ .filter(Objects::nonNull)
|
|
|
|
|
+ .distinct()
|
|
|
|
|
+ .collect(Collectors.toList());
|
|
|
|
|
+ //没有接线组只存当前线路数据
|
|
|
|
|
+ if (groupFeederIds.isEmpty()) {
|
|
|
|
|
+ groupFeederIds = Collections.singletonList(feederId);
|
|
|
|
|
+ }
|
|
|
|
|
+ for (String feeder : groupFeederIds) {
|
|
|
|
|
+ s = JSON.parseObject(JSON.toJSONString(redisTemplate.opsForValue().get(feeder + dto.getTime() + "zg")), StateEstimation.class);
|
|
|
|
|
+ if (s != null) {
|
|
|
|
|
+ log.info(JSON.toJSONString(ss));
|
|
|
|
|
+ ss = s.getPeriodSwitchSeResult();
|
|
|
|
|
+ } else {
|
|
|
|
|
+ ss = iStateEstimationApiClient.queryByFeederSave(StateEstimationRequest.builder()
|
|
|
|
|
+ .psrIds(Collections.singletonList(dto.getLinePsrId()))
|
|
|
|
|
+ .containerCode(Collections.singletonList(CommonConstant.SWITCH))
|
|
|
|
|
+ .startTime(dto.getTime())
|
|
|
|
|
+ .endTime(dto.getTime())
|
|
|
|
|
+ .isAuto(Boolean.FALSE)
|
|
|
|
|
+ .build()).getData().getPeriodSwitchSeResult();
|
|
|
|
|
+ }
|
|
|
|
|
+ if (CollectionUtils.isNotEmpty(ss)) {
|
|
|
|
|
+ periodSwitchSeResult.addAll(ss);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ List<String> psrIdAuto = new ArrayList<>();
|
|
|
|
|
+ if (!periodSwitchSeResult.isEmpty()) {
|
|
|
|
|
+ //获取所有自动化开关psrId
|
|
|
|
|
+ psrIdAuto = periodSwitchSeResult
|
|
|
|
|
+ .stream().filter(a -> "true".equals(a.getIsAuto()))
|
|
|
|
|
+ .map(StateEstimation.StateEstimationSwitchResult::getPsrId)
|
|
|
|
|
+ .collect(Collectors.toList());
|
|
|
|
|
+ }
|
|
|
|
|
+ HashSet<String> psrSet = new HashSet<>(psrIdAuto);
|
|
|
|
|
+
|
|
|
|
|
+ if (CollectionUtils.isNotEmpty(periodSwitchSeResult)) {
|
|
|
|
|
+ periodSwitchSeResult.forEach(e -> {
|
|
|
|
|
+ BeakerSvgInfoVO beakerSvgInfoVO = BeakerSvgInfoVO.builder().breakerPsrId(e.getPsrId()).build();
|
|
|
|
|
+ String seiIs = "0.0";
|
|
|
|
|
+ try {
|
|
|
|
|
+ if (StringUtils.isNotEmpty(e.getSeiIs().get(0))) {
|
|
|
|
|
+ BigDecimal bigDecimal = new BigDecimal(e.getSeiIs().get(0));
|
|
|
|
|
+ seiIs = bigDecimal.multiply(new BigDecimal(1000)).toString();
|
|
|
|
|
+ }
|
|
|
|
|
+ } catch (Exception exception) {
|
|
|
|
|
+ exception.printStackTrace();
|
|
|
|
|
+ }
|
|
|
|
|
+ String sourceName;
|
|
|
|
|
+ //设置来源系统
|
|
|
|
|
+ String switchType = "0";
|
|
|
|
|
+ if ("0111".equals(e.getPsrType())) {
|
|
|
|
|
+ //柱上断路器
|
|
|
|
|
+ switchType = "1";
|
|
|
|
|
+ }
|
|
|
|
|
+ if (psrSet.contains(e.getPsrId())) {
|
|
|
|
|
+ //量测
|
|
|
|
|
+ beakerSvgInfoVO.setLcs(BeakerStatusInfoVO.builder()
|
|
|
|
|
+ .punit(CommonUnitEnum.P.getCode())
|
|
|
|
|
+ .qunit(CommonUnitEnum.Q.getCode())
|
|
|
|
|
+ .iunit(CommonUnitEnum.I.getCode())
|
|
|
|
|
+ .uunit(CommonUnitEnum.U.getCode())
|
|
|
|
|
+ .pvalue(convertToKW(e.getSeiPs().get(0)))
|
|
|
|
|
+ .qvalue(e.getSeiQs().get(0))
|
|
|
|
|
+ .ivalue(seiIs)
|
|
|
|
|
+ .uvalue(e.getSeiUs().get(0))
|
|
|
|
|
+ .status(e.getSeiStatuss().get(0))
|
|
|
|
|
+ .isAuto(e.getIsAuto())
|
|
|
|
|
+ .sourceSystem("lc")
|
|
|
|
|
+ .switchType(switchType)
|
|
|
|
|
+ .build());
|
|
|
|
|
+ } else {
|
|
|
|
|
+ //状估
|
|
|
|
|
+ beakerSvgInfoVO.setZgs(BeakerStatusInfoVO.builder().breakerPsrId(e.getPsrId())
|
|
|
|
|
+ .punit(CommonUnitEnum.P.getCode())
|
|
|
|
|
+ .qunit(CommonUnitEnum.Q.getCode())
|
|
|
|
|
+ .iunit(CommonUnitEnum.I.getCode())
|
|
|
|
|
+ .uunit(CommonUnitEnum.U.getCode())
|
|
|
|
|
+ .pvalue(convertToKW(e.getSeoPs().get(0)))
|
|
|
|
|
+ .qvalue(e.getSeoQs().get(0))
|
|
|
|
|
+ .ivalue(seiIs)
|
|
|
|
|
+ .uvalue(e.getSeoUs().get(0))
|
|
|
|
|
+ .status(e.getSeoStatuss().get(0))
|
|
|
|
|
+ .isAuto(e.getIsAuto())
|
|
|
|
|
+ .sourceSystem("zg")
|
|
|
|
|
+ .switchType(switchType)
|
|
|
|
|
+ .build());
|
|
|
|
|
+ }
|
|
|
|
|
+ if (beakerSvgInfoVO.getLcs() != null) {
|
|
|
|
|
+ beakerSvgInfoVO.getLcs().setBreakerPsrId(e.getPsrId());
|
|
|
|
|
+ } else {
|
|
|
|
|
+ beakerSvgInfoVO.setLcs(BeakerStatusInfoVO.builder().breakerPsrId(e.getPsrId()).build());
|
|
|
|
|
+ }
|
|
|
|
|
+ beakerStatusInfoVOS.add(beakerSvgInfoVO.getZgs());
|
|
|
|
|
+ });
|
|
|
|
|
+ }
|
|
|
|
|
+ return beakerStatusInfoVOS;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
//查找上级开关id
|
|
//查找上级开关id
|
|
|
public String getFirstSwitchOfPb(SwitchOrTransformerDTO dto) {
|
|
public String getFirstSwitchOfPb(SwitchOrTransformerDTO dto) {
|
|
|
List<String> psrTypeKg = Arrays.asList(DictConstants.KG_PSR_TYPE.split(","));
|
|
List<String> psrTypeKg = Arrays.asList(DictConstants.KG_PSR_TYPE.split(","));
|