Commit 386ff6e1 authored by hanbing's avatar hanbing

方案管理-运行计划,修改执行的日计划为列表

parent c1e59458
...@@ -25,14 +25,6 @@ public class RunningPlanDTO { ...@@ -25,14 +25,6 @@ public class RunningPlanDTO {
@NoArgsConstructor @NoArgsConstructor
@Data @Data
public static class DailyPlanListElement { public static class DailyPlanListElement {
/**
* planNo : P01
* name : 计划名1
* startTime : 07:00
* endTime : 09:00
* schemeName : 方案名1
*/
@ApiModelProperty(value = "计划编号", required = true) @ApiModelProperty(value = "计划编号", required = true)
private String planNo; private String planNo;
@ApiModelProperty(value = "日计划名", required = true) @ApiModelProperty(value = "日计划名", required = true)
...@@ -54,18 +46,17 @@ public class RunningPlanDTO { ...@@ -54,18 +46,17 @@ public class RunningPlanDTO {
@NoArgsConstructor @NoArgsConstructor
@Data @Data
public static class SchedulesPlanListElement { public static class SchedulesPlanListElement {
/**
* scheduleNo : S01
* name : 运行计划名1
* week : [1,2,3,4,5]
* specialDate : null
* planName : 计划名1
*/
@ApiModelProperty(value = "运行计划编号", required = true) @ApiModelProperty(value = "运行计划编号", required = true)
private String scheduleNo; private String scheduleNo;
@ApiModelProperty(value = "运行计划名", required = true) @ApiModelProperty(value = "运行计划名", required = true)
private String name; private String name;
@ApiModelProperty(value = "执行的日计划列表", required = true)
private List<ExecListElement> execList;
}
@NoArgsConstructor
@Data
public static class ExecListElement {
@ApiModelProperty(value = "星期:1周一,2周二,3周三,4周四,5周五,6周六,7周日", required = true) @ApiModelProperty(value = "星期:1周一,2周二,3周三,4周四,5周五,6周六,7周日", required = true)
private List<Integer> week; private List<Integer> week;
@ApiModelProperty(value = "特殊日期列表,格式 2023-01-28", required = true) @ApiModelProperty(value = "特殊日期列表,格式 2023-01-28", required = true)
......
...@@ -24,6 +24,8 @@ import java.text.SimpleDateFormat; ...@@ -24,6 +24,8 @@ import java.text.SimpleDateFormat;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/** /**
* @author Kent HAN * @author Kent HAN
...@@ -87,20 +89,34 @@ public class RunningPlanServiceImpl implements RunningPlanService { ...@@ -87,20 +89,34 @@ public class RunningPlanServiceImpl implements RunningPlanService {
for (CrossSchedulesPO crossSchedulesPO : crossSchedulesPOList) { for (CrossSchedulesPO crossSchedulesPO : crossSchedulesPOList) {
String scheduleNo = crossSchedulesPO.getScheduleNo(); String scheduleNo = crossSchedulesPO.getScheduleNo();
String name = crossSchedulesPO.getName(); String name = crossSchedulesPO.getName();
// 获取调度ID
CrossSchedulesPO schedulesPO = crossSchedulesMapper.selectByCrossIdAndScheduleNo(crossId, scheduleNo);
Integer schedulesId = schedulesPO.getId();
// 根据路口ID和调度ID查询调度计划关系
List<CrossSchedulesPlanPO> crossSchedulesPlanPOList =
crossSchedulesPlanMapper.selectByCrossIdAndSchedulesId(crossId, schedulesId);
// 构造结果集
RunningPlanDTO.SchedulesPlanListElement schedulesPlan = new RunningPlanDTO.SchedulesPlanListElement(); RunningPlanDTO.SchedulesPlanListElement schedulesPlan = new RunningPlanDTO.SchedulesPlanListElement();
schedulesPlan.setScheduleNo(scheduleNo); schedulesPlan.setScheduleNo(scheduleNo);
schedulesPlan.setName(name); schedulesPlan.setName(name);
// 构造execList
List<RunningPlanDTO.ExecListElement> execList = buildExecList(crossId, scheduleNo);
schedulesPlan.setExecList(execList);
schedulesPlanList.add(schedulesPlan);
}
return schedulesPlanList;
}
private List<RunningPlanDTO.ExecListElement> buildExecList(String crossId, String scheduleNo) {
List<RunningPlanDTO.ExecListElement> execList = new ArrayList<>();
// 获取调度ID
CrossSchedulesPO schedulesPO = crossSchedulesMapper.selectByCrossIdAndScheduleNo(crossId, scheduleNo);
Integer schedulesId = schedulesPO.getId();
// 根据路口ID、调度ID和计划ID查询调度计划关系
List<CrossSchedulesPlanPO> crossSchedulesPlanPOList =
crossSchedulesPlanMapper.selectByCrossIdAndSchedulesId(crossId, schedulesId);
Map<Integer, List<CrossSchedulesPlanPO>> collectMap = crossSchedulesPlanPOList.stream()
.collect(Collectors.groupingBy(CrossSchedulesPlanPO::getPlanId));
for (Map.Entry<Integer, List<CrossSchedulesPlanPO>> entry : collectMap.entrySet()) {
RunningPlanDTO.ExecListElement execListElement = new RunningPlanDTO.ExecListElement();
List<Integer> week = new ArrayList<>(); List<Integer> week = new ArrayList<>();
List<String> specialDateList = new ArrayList<>(); List<String> specialDateList = new ArrayList<>();
Integer planId = 0; Integer planId = entry.getKey();
for (CrossSchedulesPlanPO crossSchedulesPlanPO : crossSchedulesPlanPOList) { List<CrossSchedulesPlanPO> secondList = entry.getValue();
for (CrossSchedulesPlanPO crossSchedulesPlanPO : secondList) {
Integer day = crossSchedulesPlanPO.getWeek(); Integer day = crossSchedulesPlanPO.getWeek();
if (day == 0) { // 特殊日期 if (day == 0) { // 特殊日期
Date specialDate = crossSchedulesPlanPO.getSpecialDate(); Date specialDate = crossSchedulesPlanPO.getSpecialDate();
...@@ -108,15 +124,14 @@ public class RunningPlanServiceImpl implements RunningPlanService { ...@@ -108,15 +124,14 @@ public class RunningPlanServiceImpl implements RunningPlanService {
} else { } else {
week.add(day); week.add(day);
} }
planId = crossSchedulesPlanPO.getPlanId();
} }
schedulesPlan.setWeek(week); execListElement.setWeek(week);
schedulesPlan.setSpecialDateList(specialDateList); execListElement.setSpecialDateList(specialDateList);
CrossPlanPO crossPlanPO = crossPlanMapper.selectById(planId); CrossPlanPO crossPlanPO = crossPlanMapper.selectById(planId);
schedulesPlan.setPlanName(crossPlanPO.getName()); execListElement.setPlanName(crossPlanPO.getName());
schedulesPlanList.add(schedulesPlan); execList.add(execListElement);
} }
return schedulesPlanList; return execList;
} }
private List<RunningPlanDTO.DailyPlanListElement> buildDailyPlanList(String crossId) { private List<RunningPlanDTO.DailyPlanListElement> buildDailyPlanList(String crossId) {
...@@ -136,17 +151,21 @@ public class RunningPlanServiceImpl implements RunningPlanService { ...@@ -136,17 +151,21 @@ public class RunningPlanServiceImpl implements RunningPlanService {
crossSchedulesPO.setCrossId(crossId); crossSchedulesPO.setCrossId(crossId);
crossSchedulesMapper.insertOne(crossSchedulesPO); crossSchedulesMapper.insertOne(crossSchedulesPO);
Integer crossSchedulesId = crossSchedulesPO.getId(); Integer crossSchedulesId = crossSchedulesPO.getId();
// 根据路口ID和计划名获取计划ID // 遍历执行的日计划列表
String planName = schedulesPlan.getPlanName(); List<RunningPlanDTO.ExecListElement> execList = schedulesPlan.getExecList();
CrossPlanPO crossPlanPO = crossPlanMapper.selectByCrossIdAndName(crossId, planName); for (RunningPlanDTO.ExecListElement execListElement : execList) {
Integer planId = crossPlanPO.getId(); // 根据路口ID和计划名获取计划ID
// 更新调度计划关系表 String planName = execListElement.getPlanName();
updateCrossSchedulesPlan(crossId, schedulesPlan, crossSchedulesId, planId); CrossPlanPO crossPlanPO = crossPlanMapper.selectByCrossIdAndName(crossId, planName);
Integer planId = crossPlanPO.getId();
// 更新调度计划关系表
updateCrossSchedulesPlan(crossId, execListElement, crossSchedulesId, planId);
}
} }
} }
private void updateCrossSchedulesPlan(String crossId, RunningPlanDTO.SchedulesPlanListElement schedulesPlan, private void updateCrossSchedulesPlan(String crossId, RunningPlanDTO.ExecListElement schedulesPlan,
Integer crossSchedulesId, Integer planId) throws ParseException { Integer crossSchedulesId, Integer planId) throws ParseException {
List<Integer> week = schedulesPlan.getWeek(); List<Integer> week = schedulesPlan.getWeek();
if (week == null || week.size() == 0) { // 特殊日期 if (week == null || week.size() == 0) { // 特殊日期
List<String> specialDateList = schedulesPlan.getSpecialDateList(); List<String> specialDateList = schedulesPlan.getSpecialDateList();
...@@ -217,10 +236,13 @@ public class RunningPlanServiceImpl implements RunningPlanService { ...@@ -217,10 +236,13 @@ public class RunningPlanServiceImpl implements RunningPlanService {
private static void checkSpecialDate(RunningPlanDTO runningPlanDTO) { private static void checkSpecialDate(RunningPlanDTO runningPlanDTO) {
List<RunningPlanDTO.SchedulesPlanListElement> schedulesPlanList = runningPlanDTO.getSchedulesPlanList(); List<RunningPlanDTO.SchedulesPlanListElement> schedulesPlanList = runningPlanDTO.getSchedulesPlanList();
for (RunningPlanDTO.SchedulesPlanListElement schedulesPlan : schedulesPlanList) { for (RunningPlanDTO.SchedulesPlanListElement schedulesPlan : schedulesPlanList) {
List<Integer> week = schedulesPlan.getWeek(); List<RunningPlanDTO.ExecListElement> execList = schedulesPlan.getExecList();
List<String> specialDateList = schedulesPlan.getSpecialDateList(); for (RunningPlanDTO.ExecListElement execListElement : execList) {
if (week != null && week.size() > 0 && !CollectionUtil.isEmpty(specialDateList)) { List<Integer> week = execListElement.getWeek();
throw new WeekException("不能同时有星期选择和日期选择"); List<String> specialDateList = execListElement.getSpecialDateList();
if (CollectionUtil.isNotEmpty(week) && CollectionUtil.isNotEmpty(specialDateList)) {
throw new WeekException("不能同时有星期选择和日期选择");
}
} }
} }
} }
......
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