Commit d1c0d4ff authored by hanbing's avatar hanbing

同一方案中相位号不可重复,返回前端错误提示

parent 8ec97e7f
package net.wanji.web.common.exception;
/**
* 路段关系异常
*
* @author Kent HAN
* @date 2022/11/10 9:09
*/
public class PhaseNoNotUniqueException extends RuntimeException {
public PhaseNoNotUniqueException(String message) {
super(message);
}
public PhaseNoNotUniqueException(String message, Exception e) {
super(message,e);
}
}
...@@ -17,4 +17,10 @@ public class SignalGlobalExceptionHandler { ...@@ -17,4 +17,10 @@ public class SignalGlobalExceptionHandler {
JsonViewObject jsonViewObject = JsonViewObject.newInstance(); JsonViewObject jsonViewObject = JsonViewObject.newInstance();
return jsonViewObject.fail(e); return jsonViewObject.fail(e);
} }
@ExceptionHandler(value = PhaseNoNotUniqueException.class)
public JsonViewObject phaseNoNotUniqueExceptionHandler(PhaseNoNotUniqueException e) {
JsonViewObject jsonViewObject = JsonViewObject.newInstance();
return jsonViewObject.fail(e);
}
} }
\ No newline at end of file
package net.wanji.web.service.scheme.impl; package net.wanji.web.service.scheme.impl;
import net.wanji.web.common.constant.ControlModeConst; import net.wanji.web.common.constant.ControlModeConst;
import net.wanji.web.common.exception.PhaseNoNotUniqueException;
import net.wanji.web.dto.LaneIdDTO; import net.wanji.web.dto.LaneIdDTO;
import net.wanji.web.dto.LightIdDTO; import net.wanji.web.dto.LightIdDTO;
import net.wanji.web.dto.SaveSchemeConfigDTO; import net.wanji.web.dto.SaveSchemeConfigDTO;
...@@ -112,6 +113,8 @@ public class SchemeConfigServiceImpl implements SchemeConfigService { ...@@ -112,6 +113,8 @@ public class SchemeConfigServiceImpl implements SchemeConfigService {
String crossId = saveSchemeConfigDTO.getCrossId(); String crossId = saveSchemeConfigDTO.getCrossId();
crossPhaseMapper.deleteByCrossId(crossId); crossPhaseMapper.deleteByCrossId(crossId);
crossPhaseLightsMapper.deleteByCrossId(crossId); crossPhaseLightsMapper.deleteByCrossId(crossId);
// 用于限制相位号不能重复
Set<String> phaseNoSet = new HashSet<>();
List<SaveSchemeConfigDTO.PhaseScheme> phaseSchemeList = saveSchemeConfigDTO.getPhaseSchemeList(); List<SaveSchemeConfigDTO.PhaseScheme> phaseSchemeList = saveSchemeConfigDTO.getPhaseSchemeList();
for (SaveSchemeConfigDTO.PhaseScheme phaseScheme : phaseSchemeList) { for (SaveSchemeConfigDTO.PhaseScheme phaseScheme : phaseSchemeList) {
...@@ -129,9 +132,10 @@ public class SchemeConfigServiceImpl implements SchemeConfigService { ...@@ -129,9 +132,10 @@ public class SchemeConfigServiceImpl implements SchemeConfigService {
List<SaveSchemeConfigDTO.PhaseListElement> phaseList = groupListElement.getPhaseList(); List<SaveSchemeConfigDTO.PhaseListElement> phaseList = groupListElement.getPhaseList();
for (int i = 0; i < phaseList.size(); i++) { for (int i = 0; i < phaseList.size(); i++) {
SaveSchemeConfigDTO.PhaseListElement phase = phaseList.get(i); SaveSchemeConfigDTO.PhaseListElement phase = phaseList.get(i);
String phaseNo = phase.getPhaseNo();
testPhaseNo(phaseNoSet, phaseNo);
Integer phaseType = phase.getPhaseType(); Integer phaseType = phase.getPhaseType();
if (phaseType != 3) { // 非伴随相位 if (phaseType != 3) { // 非伴随相位
String phaseNo = phase.getPhaseNo();
phaseNoMap.put(phaseNo, phase); phaseNoMap.put(phaseNo, phase);
Integer yellowFlashTime = phase.getYellowFlashTime(); Integer yellowFlashTime = phase.getYellowFlashTime();
Integer redFlashTime = phase.getRedFlashTime(); Integer redFlashTime = phase.getRedFlashTime();
...@@ -172,7 +176,6 @@ public class SchemeConfigServiceImpl implements SchemeConfigService { ...@@ -172,7 +176,6 @@ public class SchemeConfigServiceImpl implements SchemeConfigService {
} }
} else { // 伴随相位 } else { // 伴随相位
CrossPhasePO crossPhasePO = new CrossPhasePO(); CrossPhasePO crossPhasePO = new CrossPhasePO();
String phaseNo = phase.getPhaseNo();
crossPhasePO.setPhaseNo(phaseNo); crossPhasePO.setPhaseNo(phaseNo);
crossPhasePO.setPhaseType(phaseType); crossPhasePO.setPhaseType(phaseType);
crossPhasePO.setSort(i + 1); crossPhasePO.setSort(i + 1);
...@@ -231,6 +234,8 @@ public class SchemeConfigServiceImpl implements SchemeConfigService { ...@@ -231,6 +234,8 @@ public class SchemeConfigServiceImpl implements SchemeConfigService {
if (specialControlModeList != null) { if (specialControlModeList != null) {
for (int i = 0; i < specialControlModeList.size(); i++) { for (int i = 0; i < specialControlModeList.size(); i++) {
SaveSchemeConfigDTO.PhaseListElement phase = specialControlModeList.get(i); SaveSchemeConfigDTO.PhaseListElement phase = specialControlModeList.get(i);
String phaseNo = phase.getPhaseNo();
testPhaseNo(phaseNoSet, phaseNo);
CrossPhasePO crossPhasePO = new CrossPhasePO(); CrossPhasePO crossPhasePO = new CrossPhasePO();
crossPhasePO.setPhaseNo(phase.getPhaseNo()); crossPhasePO.setPhaseNo(phase.getPhaseNo());
crossPhasePO.setSort(i + 1); crossPhasePO.setSort(i + 1);
...@@ -257,6 +262,13 @@ public class SchemeConfigServiceImpl implements SchemeConfigService { ...@@ -257,6 +262,13 @@ public class SchemeConfigServiceImpl implements SchemeConfigService {
} }
} }
private static void testPhaseNo(Set<String> phaseNoSet, String phaseNo) throws PhaseNoNotUniqueException {
boolean isUnique = phaseNoSet.add(phaseNo);
if (!isUnique) {
throw new PhaseNoNotUniqueException("同一方案中相位号不可重复");
}
}
private void updateCrossPhaseLights(String crossId, private void updateCrossPhaseLights(String crossId,
SaveSchemeConfigDTO.PhaseListElement phase, SaveSchemeConfigDTO.PhaseListElement phase,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment