Commit 126685a7 authored by hanbing's avatar hanbing

[add] 路口管理,控制模式下拉框、修改控制模式

parent 6f90b4fb
package net.wanji.web.bo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @author Kent HAN
* @date 2022/11/9 17:21
*/
@Data
@ApiModel(value = "ControlModeBO")
public class ControlModeBO {
@ApiModelProperty( value = "控制模式:1定周期;2绿波协调;3黄闪;4全红;5关灯;6单点自适应;7全感应;8半感应;9行人过街",notes = "")
private Integer controlMode ;
@ApiModelProperty( value = "路口ID",notes = "")
private String crossId ;
}
...@@ -7,12 +7,14 @@ import io.swagger.annotations.ApiResponse; ...@@ -7,12 +7,14 @@ import io.swagger.annotations.ApiResponse;
import io.swagger.annotations.ApiResponses; import io.swagger.annotations.ApiResponses;
import net.wanji.common.framework.rest.JsonViewObject; import net.wanji.common.framework.rest.JsonViewObject;
import net.wanji.databus.bo.AreaDetailBO; import net.wanji.databus.bo.AreaDetailBO;
import net.wanji.web.bo.AddOrUpdateAreaBO;
import net.wanji.databus.bo.AreaIdBO; import net.wanji.databus.bo.AreaIdBO;
import net.wanji.databus.vo.AreaDetailVO;
import net.wanji.web.bo.AddOrUpdateAreaBO;
import net.wanji.web.bo.ControlModeBO;
import net.wanji.web.bo.PolygonBO; import net.wanji.web.bo.PolygonBO;
import net.wanji.web.bo.SpecialServiceRouteBO; import net.wanji.web.bo.SpecialServiceRouteBO;
import net.wanji.web.service.impl.CrossManageServiceImpl; import net.wanji.web.service.impl.CrossManageServiceImpl;
import net.wanji.databus.vo.AreaDetailVO; import net.wanji.web.vo.ControlModeVO;
import net.wanji.web.vo.CrossIdAndNameVO; import net.wanji.web.vo.CrossIdAndNameVO;
import net.wanji.web.vo.ListAreaVO; import net.wanji.web.vo.ListAreaVO;
import net.wanji.web.vo.SelectCrossesByStartEndVO; import net.wanji.web.vo.SelectCrossesByStartEndVO;
...@@ -98,8 +100,10 @@ public class CrossManageController { ...@@ -98,8 +100,10 @@ public class CrossManageController {
return JsonViewObject.newInstance().success(listAreaVO); return JsonViewObject.newInstance().success(listAreaVO);
} }
@ApiOperation(value = "区域详情", notes = "区域详情", produces = MediaType.APPLICATION_JSON) @ApiOperation(value = "区域详情", notes = "区域详情", response = JsonViewObject.class,
@PostMapping(value = "/areaDetail", produces = MediaType.APPLICATION_JSON) produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@PostMapping(value = "/areaDetail",
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@ApiResponses({ @ApiResponses({
@ApiResponse(code = 200, message = "OK", response = AreaDetailVO.class), @ApiResponse(code = 200, message = "OK", response = AreaDetailVO.class),
}) })
...@@ -108,6 +112,26 @@ public class CrossManageController { ...@@ -108,6 +112,26 @@ public class CrossManageController {
return JsonViewObject.newInstance().success(res); return JsonViewObject.newInstance().success(res);
} }
// todo 控制模式列表,修改控制模式 @ApiOperation(value = "控制模式下拉框", notes = "控制模式下拉框", produces = MediaType.APPLICATION_JSON)
@PostMapping(value = "/controlModeMenu", produces = MediaType.APPLICATION_JSON)
@ApiResponses({
@ApiResponse(code = 200, message = "OK", response = ControlModeVO.class),
})
public JsonViewObject controlModeMenu() {
List<ControlModeVO> res = crossManageService.controlModeMenu();
return JsonViewObject.newInstance().success(res);
}
@ApiOperation(value = "修改控制模式", notes = "修改控制模式", response = JsonViewObject.class,
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@PostMapping(value = "/updateControlMode",
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@ApiResponses({
@ApiResponse(code = 200, message = "OK", response = JsonViewObject.class),
})
public JsonViewObject updateControlMode(@RequestBody ControlModeBO controlModeBO) {
crossManageService.updateControlMode(controlModeBO);
return JsonViewObject.newInstance().success();
}
} }
\ No newline at end of file
...@@ -4,9 +4,11 @@ import com.github.pagehelper.PageInfo; ...@@ -4,9 +4,11 @@ import com.github.pagehelper.PageInfo;
import net.wanji.databus.bo.AreaDetailBO; import net.wanji.databus.bo.AreaDetailBO;
import net.wanji.web.bo.AddOrUpdateAreaBO; import net.wanji.web.bo.AddOrUpdateAreaBO;
import net.wanji.databus.bo.AreaIdBO; import net.wanji.databus.bo.AreaIdBO;
import net.wanji.web.bo.ControlModeBO;
import net.wanji.web.bo.PolygonBO; import net.wanji.web.bo.PolygonBO;
import net.wanji.web.bo.SpecialServiceRouteBO; import net.wanji.web.bo.SpecialServiceRouteBO;
import net.wanji.databus.vo.AreaDetailVO; import net.wanji.databus.vo.AreaDetailVO;
import net.wanji.web.vo.ControlModeVO;
import net.wanji.web.vo.CrossIdAndNameVO; import net.wanji.web.vo.CrossIdAndNameVO;
import net.wanji.web.vo.ListAreaVO; import net.wanji.web.vo.ListAreaVO;
import net.wanji.web.vo.SelectCrossesByStartEndVO; import net.wanji.web.vo.SelectCrossesByStartEndVO;
...@@ -30,4 +32,8 @@ public interface CrossManageService { ...@@ -30,4 +32,8 @@ public interface CrossManageService {
ListAreaVO listArea(); ListAreaVO listArea();
PageInfo<AreaDetailVO> areaDetail(AreaDetailBO areaDetailBO); PageInfo<AreaDetailVO> areaDetail(AreaDetailBO areaDetailBO);
List<ControlModeVO> controlModeMenu();
void updateControlMode(ControlModeBO controlModeBO);
} }
...@@ -7,6 +7,7 @@ import com.github.pagehelper.PageHelper; ...@@ -7,6 +7,7 @@ import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo; import com.github.pagehelper.PageInfo;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import net.wanji.common.dto.CrossIdDTO; import net.wanji.common.dto.CrossIdDTO;
import net.wanji.common.enums.ControlModeEnum;
import net.wanji.common.gts.GeometryUtil; import net.wanji.common.gts.GeometryUtil;
import net.wanji.common.utils.tool.CrossUtil; import net.wanji.common.utils.tool.CrossUtil;
import net.wanji.databus.bo.AreaDetailBO; import net.wanji.databus.bo.AreaDetailBO;
...@@ -21,15 +22,13 @@ import net.wanji.databus.po.BaseAreaInfoPO; ...@@ -21,15 +22,13 @@ import net.wanji.databus.po.BaseAreaInfoPO;
import net.wanji.databus.po.BaseCrossInfoPO; import net.wanji.databus.po.BaseCrossInfoPO;
import net.wanji.databus.vo.AreaDetailVO; import net.wanji.databus.vo.AreaDetailVO;
import net.wanji.web.bo.AddOrUpdateAreaBO; import net.wanji.web.bo.AddOrUpdateAreaBO;
import net.wanji.web.bo.ControlModeBO;
import net.wanji.web.bo.PolygonBO; import net.wanji.web.bo.PolygonBO;
import net.wanji.web.bo.SpecialServiceRouteBO; import net.wanji.web.bo.SpecialServiceRouteBO;
import net.wanji.web.mapper.TBaseAreaCrossMapper; import net.wanji.web.mapper.TBaseAreaCrossMapper;
import net.wanji.web.service.CrossManageService; import net.wanji.web.service.CrossManageService;
import net.wanji.web.service.scheme.impl.RunningPlanServiceImpl; import net.wanji.web.service.scheme.impl.RunningPlanServiceImpl;
import net.wanji.web.vo.AreaTreeVO; import net.wanji.web.vo.*;
import net.wanji.web.vo.CrossIdAndNameVO;
import net.wanji.web.vo.ListAreaVO;
import net.wanji.web.vo.SelectCrossesByStartEndVO;
import net.wanji.web.vo.specialService.RouteElementVO; import net.wanji.web.vo.specialService.RouteElementVO;
import org.locationtech.jts.geom.Geometry; import org.locationtech.jts.geom.Geometry;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
...@@ -248,7 +247,7 @@ public class CrossManageServiceImpl implements CrossManageService { ...@@ -248,7 +247,7 @@ public class CrossManageServiceImpl implements CrossManageService {
Date datetime = new Date(); Date datetime = new Date();
String dateStr = sdf.format(datetime); String dateStr = sdf.format(datetime);
String crossId = areaDetailPOExt.getCrossId(); String crossId = areaDetailPOExt.getCrossId();
// 根据当前时间查询计划 // 获取当前计划
Integer planId = findPlanId(datetime, dateStr, crossId); Integer planId = findPlanId(datetime, dateStr, crossId);
if (planId != null) { if (planId != null) {
List<CrossSectionPO> crossSectionPOList = crossSectionMapper.selectByCrossAndPlan(crossId, planId); List<CrossSectionPO> crossSectionPOList = crossSectionMapper.selectByCrossAndPlan(crossId, planId);
...@@ -280,6 +279,59 @@ public class CrossManageServiceImpl implements CrossManageService { ...@@ -280,6 +279,59 @@ public class CrossManageServiceImpl implements CrossManageService {
return voPageInfo; return voPageInfo;
} }
@Override
public List<ControlModeVO> controlModeMenu() {
List<ControlModeVO> res = new ArrayList<>();
for (ControlModeEnum value : ControlModeEnum.values()) {
Integer code = value.getCode();
String name = value.getName();
ControlModeVO controlModeVO = new ControlModeVO();
controlModeVO.setControlMode(code);
controlModeVO.setControlModeStr(name);
res.add(controlModeVO);
}
return res;
}
@Override
@Transactional
public void updateControlMode(ControlModeBO controlModeBO) {
Integer controlMode = controlModeBO.getControlMode();
String crossId = controlModeBO.getCrossId();
// 获取当前时段ID
Integer sectionId = findCurrentSection(crossId);
if (sectionId != null && 0 != sectionId) {
crossSectionMapper.updateControlMode(sectionId, controlMode);
}
}
private Integer findCurrentSection(String crossId) {
Date datetime = new Date();
String dateStr = sdf.format(datetime);
// 获取当前计划ID
Integer planId = findPlanId(datetime, dateStr, crossId);
if (planId != null) {
List<CrossSectionPO> crossSectionPOList = crossSectionMapper.selectByCrossAndPlan(crossId, planId);
// 获取当前时间整数字面量
SimpleDateFormat formatter = new SimpleDateFormat("HHmm");
String timeString = formatter.format(datetime);
int nowTimeInt = Integer.parseInt(timeString);
for (CrossSectionPO crossSectionPO : crossSectionPOList) {
String startTime = crossSectionPO.getStartTime();
String endTime = crossSectionPO.getEndTime();
Integer startTimeInt = timeStrToInt(startTime);
Integer endTimeInt = timeStrToInt(endTime);
if (nowTimeInt <= endTimeInt && nowTimeInt >= startTimeInt) {
return crossSectionPO.getId();
}
}
}
return 0;
}
private Integer timeStrToInt(String time) { private Integer timeStrToInt(String time) {
time = time.replace(":", ""); time = time.replace(":", "");
int timeInt = Integer.parseInt(time); int timeInt = Integer.parseInt(time);
......
package net.wanji.web.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.NoArgsConstructor;
@NoArgsConstructor
@Data
@ApiModel(value = "ControlModeVO", description = "控制模式下拉框")
public class ControlModeVO {
@ApiModelProperty(value = "控制模式:1定周期;2绿波协调;3黄闪;4全红;5关灯;6单点自适应;7全感应;8半感应;9行人过街")
private Integer controlMode;
@ApiModelProperty(value = "控制模式字符串")
private String controlModeStr;
}
...@@ -14,7 +14,8 @@ public enum ControlModeEnum { ...@@ -14,7 +14,8 @@ public enum ControlModeEnum {
OFF_LIGHT(5, "关灯"), OFF_LIGHT(5, "关灯"),
SINGLE_POINT_ADAPTATION(6, "单点自适应"), SINGLE_POINT_ADAPTATION(6, "单点自适应"),
FULL_INDUCTION(7, "全感应"), FULL_INDUCTION(7, "全感应"),
HALF_INDUCTION(8, "半感应"); HALF_INDUCTION(8, "半感应"),
PEDESTRIAN(9, "行人过街");
private Integer code; private Integer code;
private String name; private String name;
......
...@@ -24,4 +24,6 @@ public interface BaseCrossSectionMapper { ...@@ -24,4 +24,6 @@ public interface BaseCrossSectionMapper {
List<CrossSectionPO> selectByCrossAndPlan(String crossId, Integer planId); List<CrossSectionPO> selectByCrossAndPlan(String crossId, Integer planId);
CrossSectionPO selectById(Integer id); CrossSectionPO selectById(Integer id);
void updateControlMode(Integer sectionId, Integer controlMode);
} }
...@@ -25,6 +25,12 @@ ...@@ -25,6 +25,12 @@
values (#{sectionNo}, #{startTime}, #{endTime}, #{crossId}, #{planId}, #{controlMode}, #{schemeId}) values (#{sectionNo}, #{startTime}, #{endTime}, #{crossId}, #{planId}, #{controlMode}, #{schemeId})
</insert> </insert>
<update id="updateControlMode">
update t_base_cross_section
set control_mode = #{controlMode}
where id = #{sectionId}
</update>
<delete id="deleteByCrossId"> <delete id="deleteByCrossId">
DELETE DELETE
FROM t_base_cross_section FROM t_base_cross_section
......
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