Commit 46973373 authored by hanbing's avatar hanbing

方案管理-方案下发,根据当前时间返回相位列表

parent cc41a27c
...@@ -2,12 +2,16 @@ package net.wanji.web.controller; ...@@ -2,12 +2,16 @@ package net.wanji.web.controller;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiResponse;
import io.swagger.annotations.ApiResponses;
import net.wanji.feign.pojo.result.JsonViewObject; import net.wanji.feign.pojo.result.JsonViewObject;
import net.wanji.web.dto.CrossIdAndPhaseIdsDTO;
import net.wanji.web.dto.CrossIdAndTimeDTO;
import net.wanji.web.dto.CrossIdDTO; import net.wanji.web.dto.CrossIdDTO;
import net.wanji.web.dto.CrossIdAndPhaseIdDTO;
import net.wanji.web.dto.ScheduleIdDTO; import net.wanji.web.dto.ScheduleIdDTO;
import net.wanji.web.dto.SchemeIdDTO; import net.wanji.web.dto.SchemeIdDTO;
import net.wanji.web.service.impl.SchemeSendServiceImpl; import net.wanji.web.service.impl.PlanSendServiceImpl;
import net.wanji.web.vo.PhaseListByTimeVO;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
...@@ -22,65 +26,77 @@ import org.springframework.web.bind.annotation.RestController; ...@@ -22,65 +26,77 @@ import org.springframework.web.bind.annotation.RestController;
@RestController @RestController
@SuppressWarnings("all") @SuppressWarnings("all")
public class PlanSendController { public class PlanSendController {
private final SchemeSendServiceImpl schemeSendService; private final PlanSendServiceImpl planSendService;
public PlanSendController(SchemeSendServiceImpl schemeSendService) { public PlanSendController(PlanSendServiceImpl planSendService) {
this.schemeSendService = schemeSendService; this.planSendService = planSendService;
} }
@ApiOperation(value = "方案下发", notes = "时间表下发") @ApiOperation(value = "方案下发", notes = "时间表下发")
@PostMapping("/scheduleSend") @PostMapping("/scheduleSend")
public JsonViewObject timeTableSend(@RequestBody ScheduleIdDTO scheduleIdDTO) { public JsonViewObject timeTableSend(@RequestBody ScheduleIdDTO scheduleIdDTO) {
JsonViewObject jsonViewObject = schemeSendService.scheduleSend(scheduleIdDTO); JsonViewObject jsonViewObject = planSendService.scheduleSend(scheduleIdDTO);
return jsonViewObject; return jsonViewObject;
} }
@ApiOperation(value = "强制方案", notes = "强制方案") @ApiOperation(value = "强制方案", notes = "强制方案")
@PostMapping("/schemeSend") @PostMapping("/schemeSend")
public JsonViewObject schemeSend(@RequestBody SchemeIdDTO schemeIdDTO) { public JsonViewObject schemeSend(@RequestBody SchemeIdDTO schemeIdDTO) {
JsonViewObject jsonViewObject = schemeSendService.schemeSend(schemeIdDTO); JsonViewObject jsonViewObject = planSendService.schemeSend(schemeIdDTO);
return jsonViewObject; return jsonViewObject;
} }
@ApiOperation(value = "模式切换-中心控制-步进", notes = "模式切换-中心控制-步进") @ApiOperation(value = "模式切换-中心控制-步进", notes = "模式切换-中心控制-步进")
@PostMapping("/nextStep") @PostMapping("/nextStep")
public JsonViewObject nextStep(@RequestBody CrossIdDTO crossIdDTO) { public JsonViewObject nextStep(@RequestBody CrossIdDTO crossIdDTO) {
JsonViewObject jsonViewObject = schemeSendService.nextStep(crossIdDTO); JsonViewObject jsonViewObject = planSendService.nextStep(crossIdDTO);
return jsonViewObject; return jsonViewObject;
} }
@ApiOperation(value = "模式切换-中心控制-相位锁定", notes = "模式切换-中心控制-相位锁定") @ApiOperation(value = "模式切换-中心控制-相位锁定", notes = "模式切换-中心控制-相位锁定")
@PostMapping("/lockPhase") @PostMapping("/lockPhase")
public JsonViewObject lockPhase(@RequestBody CrossIdAndPhaseIdDTO crossIdAndPhaseIdDTO) { public JsonViewObject lockPhase(@RequestBody CrossIdAndPhaseIdsDTO crossIdAndPhaseIdsDTO) {
JsonViewObject jsonViewObject = schemeSendService.lockPhase(crossIdAndPhaseIdDTO); JsonViewObject jsonViewObject = planSendService.lockPhase(crossIdAndPhaseIdsDTO);
return jsonViewObject; return jsonViewObject;
} }
@ApiOperation(value = "模式切换-中心控制-全红控制", notes = "模式切换-中心控制-全红控制") @ApiOperation(value = "模式切换-中心控制-全红控制", notes = "模式切换-中心控制-全红控制")
@PostMapping("/allRedControl") @PostMapping("/allRedControl")
public JsonViewObject allRedControl(@RequestBody CrossIdDTO crossIdDTO) { public JsonViewObject allRedControl(@RequestBody CrossIdDTO crossIdDTO) {
JsonViewObject jsonViewObject = schemeSendService.allRedControl(crossIdDTO); JsonViewObject jsonViewObject = planSendService.allRedControl(crossIdDTO);
return jsonViewObject; return jsonViewObject;
} }
@ApiOperation(value = "模式切换-中心控制-黄闪控制", notes = "模式切换-中心控制-黄闪控制") @ApiOperation(value = "模式切换-中心控制-黄闪控制", notes = "模式切换-中心控制-黄闪控制")
@PostMapping("/yellowLightControl") @PostMapping("/yellowLightControl")
public JsonViewObject yellowLightControl(@RequestBody CrossIdDTO crossIdDTO) { public JsonViewObject yellowLightControl(@RequestBody CrossIdDTO crossIdDTO) {
JsonViewObject jsonViewObject = schemeSendService.yellowLightControl(crossIdDTO); JsonViewObject jsonViewObject = planSendService.yellowLightControl(crossIdDTO);
return jsonViewObject; return jsonViewObject;
} }
@ApiOperation(value = "模式切换-中心控制-恢复", notes = "模式切换-中心控制-恢复") @ApiOperation(value = "模式切换-中心控制-恢复", notes = "模式切换-中心控制-恢复")
@PostMapping("/restore") @PostMapping("/restore")
public JsonViewObject restore(@RequestBody CrossIdAndPhaseIdDTO crossIdAndPhaseIdDTO) { public JsonViewObject restore(@RequestBody CrossIdAndPhaseIdsDTO crossIdAndPhaseIdsDTO) {
JsonViewObject jsonViewObject = schemeSendService.restore(crossIdAndPhaseIdDTO); JsonViewObject jsonViewObject = planSendService.restore(crossIdAndPhaseIdsDTO);
return jsonViewObject; return jsonViewObject;
} }
@ApiOperation(value = "信号机方案同步", notes = "信号机方案同步") @ApiOperation(value = "信号机方案同步", notes = "信号机方案同步")
@PostMapping("/syncScheme") @PostMapping("/syncScheme")
public JsonViewObject syncScheme(@RequestBody CrossIdDTO crossIdDTO) { public JsonViewObject syncScheme(@RequestBody CrossIdDTO crossIdDTO) {
JsonViewObject jsonViewObject = schemeSendService.syncScheme(crossIdDTO); JsonViewObject jsonViewObject = planSendService.syncScheme(crossIdDTO);
return jsonViewObject; return jsonViewObject;
} }
@ApiOperation(value = "根据当前时间返回相位列表", notes = "根据当前时间返回相位列表")
@PostMapping("/phaseListByTime")
@ApiResponses({
@ApiResponse(code = 200, message = "OK", response = PhaseListByTimeVO.class),
})
public JsonViewObject phaseListByTime(@RequestBody CrossIdAndTimeDTO crossIdAndTimeDTO) {
PhaseListByTimeVO phaseListByTimeVO = planSendService.phaseListByTime(crossIdAndTimeDTO);
JsonViewObject jsonViewObject = JsonViewObject.newInstance();
return jsonViewObject.success(phaseListByTimeVO);
}
} }
...@@ -3,6 +3,8 @@ package net.wanji.web.dto; ...@@ -3,6 +3,8 @@ package net.wanji.web.dto;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import java.util.List;
/** /**
* 方案下发-模式切换-中心控制-相位锁定输入参数 * 方案下发-模式切换-中心控制-相位锁定输入参数
* *
...@@ -10,9 +12,9 @@ import lombok.Data; ...@@ -10,9 +12,9 @@ import lombok.Data;
* @date 2022/12/20 10:17 * @date 2022/12/20 10:17
*/ */
@Data @Data
public class CrossIdAndPhaseIdDTO { public class CrossIdAndPhaseIdsDTO {
@ApiModelProperty(value = "路口ID,如:c7e7b1f352dd4acab4a60088eb391cca", required = true) @ApiModelProperty(value = "路口ID,如:c7e7b1f352dd4acab4a60088eb391cca", required = true)
private String crossId; private String crossId;
@ApiModelProperty(value = "相位ID", required = true) @ApiModelProperty(value = "相位ID列表", required = true)
private Integer phaseId; private List<Integer> phaseIds;
} }
package net.wanji.web.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
/**
*
* @author Kent HAN
* @date 2022/12/20 10:17
*/
@Data
public class CrossIdAndTimeDTO {
@ApiModelProperty(value = "路口ID,如:c7e7b1f352dd4acab4a60088eb391cca", required = true)
private String crossId;
@ApiModelProperty(value = "当前日期时间 yyyy-MM-dd HH:mm:ss", required = true)
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
private Date datetime;
}
package net.wanji.web.service; package net.wanji.web.service;
import net.wanji.feign.pojo.result.JsonViewObject; import net.wanji.feign.pojo.result.JsonViewObject;
import net.wanji.web.dto.CrossIdAndTimeDTO;
import net.wanji.web.dto.CrossIdDTO; import net.wanji.web.dto.CrossIdDTO;
import net.wanji.web.dto.CrossIdAndPhaseIdDTO; import net.wanji.web.dto.CrossIdAndPhaseIdsDTO;
import net.wanji.web.dto.ScheduleIdDTO; import net.wanji.web.dto.ScheduleIdDTO;
import net.wanji.web.dto.SchemeIdDTO; import net.wanji.web.dto.SchemeIdDTO;
import net.wanji.web.vo.PhaseListByTimeVO;
/** /**
* @author Kent HAN * @author Kent HAN
* @date 2022/11/3 16:14 * @date 2022/11/3 16:14
*/ */
public interface SchemeSendService { public interface PlanSendService {
JsonViewObject scheduleSend(ScheduleIdDTO scheduleIdDTO); JsonViewObject scheduleSend(ScheduleIdDTO scheduleIdDTO);
JsonViewObject schemeSend(SchemeIdDTO schemeIdDTO); JsonViewObject schemeSend(SchemeIdDTO schemeIdDTO);
JsonViewObject nextStep(CrossIdDTO crossIdDTO); JsonViewObject nextStep(CrossIdDTO crossIdDTO);
JsonViewObject lockPhase(CrossIdAndPhaseIdDTO crossIdAndPhaseIdDTO); JsonViewObject lockPhase(CrossIdAndPhaseIdsDTO crossIdAndPhaseIdsDTO);
JsonViewObject allRedControl(CrossIdDTO crossIdDTO); JsonViewObject allRedControl(CrossIdDTO crossIdDTO);
JsonViewObject yellowLightControl(CrossIdDTO crossIdDTO); JsonViewObject yellowLightControl(CrossIdDTO crossIdDTO);
JsonViewObject restore(CrossIdAndPhaseIdDTO crossIdAndPhaseIdDTO); JsonViewObject restore(CrossIdAndPhaseIdsDTO crossIdAndPhaseIdsDTO);
JsonViewObject syncScheme(CrossIdDTO crossIdDTO); JsonViewObject syncScheme(CrossIdDTO crossIdDTO);
PhaseListByTimeVO phaseListByTime(CrossIdAndTimeDTO crossIdAndTimeDTO);
} }
package net.wanji.web.service.impl; package net.wanji.web.service.impl;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import com.google.gson.Gson; import com.google.gson.Gson;
import com.google.gson.GsonBuilder; import com.google.gson.GsonBuilder;
...@@ -10,8 +12,11 @@ import net.wanji.feign.pojo.vo.LockControlVO; ...@@ -10,8 +12,11 @@ import net.wanji.feign.pojo.vo.LockControlVO;
import net.wanji.feign.pojo.vo.ScheduleSendVO; import net.wanji.feign.pojo.vo.ScheduleSendVO;
import net.wanji.feign.pojo.vo.SchemeSendVO; import net.wanji.feign.pojo.vo.SchemeSendVO;
import net.wanji.feign.service.UtcFeignClients; import net.wanji.feign.service.UtcFeignClients;
import net.wanji.web.dto.CrossIdAndPhaseIdDTO; import net.wanji.web.dto.CrossIdAndPhaseIdsDTO;
import net.wanji.web.dto.CrossIdAndTimeDTO;
import net.wanji.web.dto.CrossIdDTO; import net.wanji.web.dto.CrossIdDTO;
import net.wanji.web.dto.RunningPlanDTO;
import net.wanji.web.dto.SaveSchemeConfigDTO;
import net.wanji.web.dto.ScheduleIdDTO; import net.wanji.web.dto.ScheduleIdDTO;
import net.wanji.web.dto.SchemeIdDTO; import net.wanji.web.dto.SchemeIdDTO;
import net.wanji.web.mapper.scheme.CrossLightsMapper; import net.wanji.web.mapper.scheme.CrossLightsMapper;
...@@ -26,7 +31,10 @@ import net.wanji.web.po.scheme.CrossPhasePO; ...@@ -26,7 +31,10 @@ import net.wanji.web.po.scheme.CrossPhasePO;
import net.wanji.web.po.scheme.CrossPlanPO; import net.wanji.web.po.scheme.CrossPlanPO;
import net.wanji.web.po.scheme.CrossSchedulesPlanPO; import net.wanji.web.po.scheme.CrossSchedulesPlanPO;
import net.wanji.web.po.scheme.CrossSchemePO; import net.wanji.web.po.scheme.CrossSchemePO;
import net.wanji.web.service.SchemeSendService; import net.wanji.web.service.PlanSendService;
import net.wanji.web.service.scheme.impl.RunningPlanServiceImpl;
import net.wanji.web.service.scheme.impl.SchemeConfigServiceImpl;
import net.wanji.web.vo.PhaseListByTimeVO;
import net.wanji.web.vo.SchemePhaseLightsVO; import net.wanji.web.vo.SchemePhaseLightsVO;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.beans.factory.annotation.Qualifier;
...@@ -46,7 +54,7 @@ import java.util.stream.Collectors; ...@@ -46,7 +54,7 @@ import java.util.stream.Collectors;
* @date 2023/2/1 9:39 * @date 2023/2/1 9:39
*/ */
@Service @Service
public class SchemeSendServiceImpl implements SchemeSendService { public class PlanSendServiceImpl implements PlanSendService {
private final UtcFeignClients utcFeignClients; private final UtcFeignClients utcFeignClients;
private final CrossSchedulesPlanMapper crossSchedulesPlanMapper; private final CrossSchedulesPlanMapper crossSchedulesPlanMapper;
private final CrossPlanMapper crossPlanMapper; private final CrossPlanMapper crossPlanMapper;
...@@ -54,11 +62,15 @@ public class SchemeSendServiceImpl implements SchemeSendService { ...@@ -54,11 +62,15 @@ public class SchemeSendServiceImpl implements SchemeSendService {
private final CrossPhaseMapper crossPhaseMapper; private final CrossPhaseMapper crossPhaseMapper;
private final CrossLightsMapper crossLightsMapper; private final CrossLightsMapper crossLightsMapper;
private final CrossPhaseLightsMapper crossPhaseLightsMapper; private final CrossPhaseLightsMapper crossPhaseLightsMapper;
private final RunningPlanServiceImpl runningPlanServiceImpl;
private final SchemeConfigServiceImpl schemeConfigServiceImpl;
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
SimpleDateFormat hourMinuteSdf = new SimpleDateFormat("HH:mm");
private Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd").create(); private Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd").create();
public SchemeSendServiceImpl(@Qualifier("net.wanji.feign.service.UtcFeignClients") UtcFeignClients utcFeignClients, CrossSchedulesPlanMapper crossSchedulesPlanMapper, CrossPlanMapper crossPlanMapper, CrossSchemeMapper crossSchemeMapper, CrossPhaseMapper crossPhaseMapper, CrossLightsMapper crossLightsMapper, CrossPhaseLightsMapper crossPhaseLightsMapper) { public PlanSendServiceImpl(@Qualifier("net.wanji.feign.service.UtcFeignClients") UtcFeignClients utcFeignClients, CrossSchedulesPlanMapper crossSchedulesPlanMapper, CrossPlanMapper crossPlanMapper, CrossSchemeMapper crossSchemeMapper, CrossPhaseMapper crossPhaseMapper, CrossLightsMapper crossLightsMapper, CrossPhaseLightsMapper crossPhaseLightsMapper, RunningPlanServiceImpl runningPlanServiceImpl, SchemeConfigServiceImpl schemeConfigServiceImpl) {
this.utcFeignClients = utcFeignClients; this.utcFeignClients = utcFeignClients;
this.crossSchedulesPlanMapper = crossSchedulesPlanMapper; this.crossSchedulesPlanMapper = crossSchedulesPlanMapper;
this.crossPlanMapper = crossPlanMapper; this.crossPlanMapper = crossPlanMapper;
...@@ -66,6 +78,8 @@ public class SchemeSendServiceImpl implements SchemeSendService { ...@@ -66,6 +78,8 @@ public class SchemeSendServiceImpl implements SchemeSendService {
this.crossPhaseMapper = crossPhaseMapper; this.crossPhaseMapper = crossPhaseMapper;
this.crossLightsMapper = crossLightsMapper; this.crossLightsMapper = crossLightsMapper;
this.crossPhaseLightsMapper = crossPhaseLightsMapper; this.crossPhaseLightsMapper = crossPhaseLightsMapper;
this.runningPlanServiceImpl = runningPlanServiceImpl;
this.schemeConfigServiceImpl = schemeConfigServiceImpl;
} }
@Override @Override
...@@ -113,18 +127,19 @@ public class SchemeSendServiceImpl implements SchemeSendService { ...@@ -113,18 +127,19 @@ public class SchemeSendServiceImpl implements SchemeSendService {
} }
@Override @Override
public JsonViewObject lockPhase(CrossIdAndPhaseIdDTO crossIdAndPhaseIdDTO) { public JsonViewObject lockPhase(CrossIdAndPhaseIdsDTO crossIdAndPhaseIdsDTO) {
LockControlVO lockControlVO = new LockControlVO(); LockControlVO lockControlVO = new LockControlVO();
lockControlVO.setCrossCode(crossIdAndPhaseIdDTO.getCrossId()); lockControlVO.setCrossCode(crossIdAndPhaseIdsDTO.getCrossId());
lockControlVO.setCommand(1); // 控制标识:1是;0否 lockControlVO.setCommand(1); // 控制标识:1是;0否
lockControlVO.setDuration(0); // 长期 lockControlVO.setDuration(0); // 长期
Integer phaseId = crossIdAndPhaseIdDTO.getPhaseId(); List<Integer> phaseIds = crossIdAndPhaseIdsDTO.getPhaseIds();
CrossPhasePO crossPhasePO = crossPhaseMapper.selectById(phaseId);
String phaseNo = crossPhasePO.getPhaseNo();
List<Integer> phaseList = new ArrayList<>(); List<Integer> phaseList = new ArrayList<>();
phaseList.add(Integer.parseInt(phaseNo)); for (Integer phaseId : phaseIds) {
CrossPhasePO crossPhasePO = crossPhaseMapper.selectById(phaseId);
String phaseNo = crossPhasePO.getPhaseNo();
phaseList.add(Integer.parseInt(phaseNo));
}
lockControlVO.setPhaseList(phaseList); lockControlVO.setPhaseList(phaseList);
JsonViewObject jsonViewObject = utcFeignClients.lockControl(lockControlVO); JsonViewObject jsonViewObject = utcFeignClients.lockControl(lockControlVO);
...@@ -157,9 +172,9 @@ public class SchemeSendServiceImpl implements SchemeSendService { ...@@ -157,9 +172,9 @@ public class SchemeSendServiceImpl implements SchemeSendService {
} }
@Override @Override
public JsonViewObject restore(CrossIdAndPhaseIdDTO crossIdAndPhaseIdDTO) { public JsonViewObject restore(CrossIdAndPhaseIdsDTO crossIdAndPhaseIdsDTO) {
String crossId = crossIdAndPhaseIdDTO.getCrossId(); String crossId = crossIdAndPhaseIdsDTO.getCrossId();
Integer phaseId = crossIdAndPhaseIdDTO.getPhaseId(); List<Integer> phaseIds = crossIdAndPhaseIdsDTO.getPhaseIds();
JsonViewObject jsonViewObject = JsonViewObject.newInstance(); JsonViewObject jsonViewObject = JsonViewObject.newInstance();
// 取消步进 // 取消步进
...@@ -171,14 +186,15 @@ public class SchemeSendServiceImpl implements SchemeSendService { ...@@ -171,14 +186,15 @@ public class SchemeSendServiceImpl implements SchemeSendService {
// 取消相位锁定 // 取消相位锁定
LockControlVO lockControlVO = new LockControlVO(); LockControlVO lockControlVO = new LockControlVO();
lockControlVO.setCrossCode(crossIdAndPhaseIdDTO.getCrossId()); lockControlVO.setCrossCode(crossIdAndPhaseIdsDTO.getCrossId());
lockControlVO.setCommand(0); // 控制标识:1是;0否 lockControlVO.setCommand(0); // 控制标识:1是;0否
lockControlVO.setDuration(0); // 长期 lockControlVO.setDuration(0); // 长期
CrossPhasePO crossPhasePO = crossPhaseMapper.selectById(phaseId);
String phaseNo = crossPhasePO.getPhaseNo();
List<Integer> phaseList = new ArrayList<>(); List<Integer> phaseList = new ArrayList<>();
phaseList.add(Integer.parseInt(phaseNo)); for (Integer phaseId : phaseIds) {
CrossPhasePO crossPhasePO = crossPhaseMapper.selectById(phaseId);
String phaseNo = crossPhasePO.getPhaseNo();
phaseList.add(Integer.parseInt(phaseNo));
}
lockControlVO.setPhaseList(phaseList); lockControlVO.setPhaseList(phaseList);
jsonViewObject = utcFeignClients.lockControl(lockControlVO); jsonViewObject = utcFeignClients.lockControl(lockControlVO);
...@@ -273,6 +289,92 @@ public class SchemeSendServiceImpl implements SchemeSendService { ...@@ -273,6 +289,92 @@ public class SchemeSendServiceImpl implements SchemeSendService {
return jsonViewObject.success(); return jsonViewObject.success();
} }
@Override
public PhaseListByTimeVO phaseListByTime(CrossIdAndTimeDTO crossIdAndTimeDTO) {
PhaseListByTimeVO phaseListByTimeVO = new PhaseListByTimeVO();
String crossId = crossIdAndTimeDTO.getCrossId();
Date datetime = crossIdAndTimeDTO.getDatetime();
String dateStr = sdf.format(datetime);
CrossIdDTO crossIdDTO = new CrossIdDTO();
crossIdDTO.setCrossId(crossId);
// 获取所有计划
RunningPlanDTO runningPlanDTO = runningPlanServiceImpl.listRunningPlan(crossIdDTO);
List<RunningPlanDTO.SchedulesPlanListElement> schedulesPlanList = runningPlanDTO.getSchedulesPlanList();
for (RunningPlanDTO.SchedulesPlanListElement schedulesPlan : schedulesPlanList) {
List<RunningPlanDTO.ExecListElement> execList = schedulesPlan.getExecList();
for (RunningPlanDTO.ExecListElement execListElement : execList) {
// 先查询特殊日期,再查询星期
List<String> specialDateList = execListElement.getSpecialDateList();
List<Integer> week = execListElement.getWeek();
if (CollectionUtil.isNotEmpty(specialDateList)) {
for (String specialDate : specialDateList) {
String substring = specialDate.substring(0, 10);
if (Objects.equals(dateStr, substring)) {
String planName = execListElement.getPlanName();
phaseListByTimeVO = getPhaseListByTimeVO(planName, datetime, runningPlanDTO, crossIdDTO);
}
}
} else if (CollectionUtil.isNotEmpty(week)) {
for (Integer day : week) {
// 1表示周日,2表示周一
int today = DateUtil.dayOfWeek(datetime);
today -= 1;
if (today == 0) {
today = 7;
}
if (day == today) {
String planName = execListElement.getPlanName();
phaseListByTimeVO = getPhaseListByTimeVO(planName, datetime, runningPlanDTO, crossIdDTO);
}
}
}
}
}
return phaseListByTimeVO;
}
private PhaseListByTimeVO getPhaseListByTimeVO(String planName, Date datetime, RunningPlanDTO runningPlanDTO,
CrossIdDTO crossIdDTO) {
PhaseListByTimeVO phaseListByTimeVO = new PhaseListByTimeVO();
List<RunningPlanDTO.TimeListElement> timeList = new ArrayList<>();
List<RunningPlanDTO.DailyPlanListElement> dailyPlanList = runningPlanDTO.getDailyPlanList();
for (RunningPlanDTO.DailyPlanListElement dailyPlan : dailyPlanList) {
String name = dailyPlan.getName();
if (Objects.equals(planName, name)) {
timeList = dailyPlan.getTimeList();
}
}
String hourMinuteStr = hourMinuteSdf.format(datetime);
String hourMinuteStrReplace = hourMinuteStr.replace(":", "");
int hourMinute = Integer.parseInt(hourMinuteStrReplace);
String schemeName = null;
for (RunningPlanDTO.TimeListElement timeListElement : timeList) {
String startTimeStr = timeListElement.getStartTime();
String startTimeStrReplace = startTimeStr.replace(":", "");
int startTime = Integer.parseInt(startTimeStrReplace);
String endTimeStr = timeListElement.getEndTime();
String endTimeStrReplace = endTimeStr.replace(":", "");
int endTime = Integer.parseInt(endTimeStrReplace);
if (hourMinute >= startTime && hourMinute <= endTime) {
String[] startEndTime = timeListElement.getStartEndTime();
startEndTime[0] = startTimeStr;
startEndTime[1] = endTimeStr;
phaseListByTimeVO.setStartEndTime(startEndTime);
schemeName = timeListElement.getSchemeName();
}
}
// 查询方案
SaveSchemeConfigDTO saveSchemeConfigDTO = schemeConfigServiceImpl.listSchemeConfig(crossIdDTO);
List<SaveSchemeConfigDTO.PhaseScheme> phaseSchemeList = saveSchemeConfigDTO.getPhaseSchemeList();
for (SaveSchemeConfigDTO.PhaseScheme phaseScheme : phaseSchemeList) {
String name = phaseScheme.getName();
if (Objects.equals(name, schemeName)) {
phaseListByTimeVO.setPhaseScheme(phaseScheme);
}
}
return phaseListByTimeVO;
}
@NotNull @NotNull
private static ControlCommandVO getControlCommandVO(CrossIdDTO crossIdDTO) { private static ControlCommandVO getControlCommandVO(CrossIdDTO crossIdDTO) {
ControlCommandVO commandVO = new ControlCommandVO(); ControlCommandVO commandVO = new ControlCommandVO();
......
package net.wanji.web.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import net.wanji.web.dto.SaveSchemeConfigDTO;
/**
* @author Kent HAN
* @date 2022/12/20 10:17
*/
@Data
@ApiModel(value = "PhaseListByTimeVO", description = "根据时间查询相位列表返回结果")
public class PhaseListByTimeVO {
@ApiModelProperty(value = "开始时间结束时间", required = true)
private String[] startEndTime;
@ApiModelProperty(value = "相位列表", required = true)
private SaveSchemeConfigDTO.PhaseScheme phaseScheme;
}
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