Commit 44654fad authored by wuxiaokai's avatar wuxiaokai

控制指令接口-优化

parent f1afad27
......@@ -23,13 +23,13 @@ public class HttpRequest {
public HttpRequest(String manufacturerAbbr, String apiCode) {
// 获取请求地址
ApiInfoPO apiInfoPO = Constants.getManufacturerUrlMap(manufacturerAbbr +
ApiInfoPO apiInfoPo = Constants.getManufacturerUrlMap(manufacturerAbbr +
Constants.SEPARATOR_UNDER_LINE + apiCode);
if (apiInfoPO == null) {
if (apiInfoPo == null) {
throw new NoSuchApiException("没有此接口信息,请在t_manufacturer_api_info表中添加");
}
url = apiInfoPO.getAddress();
httpMethod = HttpMethod.valueOf(apiInfoPO.getMethod());
url = apiInfoPo.getAddress();
httpMethod = HttpMethod.valueOf(apiInfoPo.getMethod());
headers = buildHeader();
}
......
package net.wanji.utc.service;
import net.wanji.utc.common.baseentity.BaseCrossInfo;
import net.wanji.utc.vo.signal.SignalLightStateVo;
import java.util.List;
/**
* @author meng.wang
* @version 1.0
* Created on 2020/09/10
* @description: [海康信号灯厂商接口service]
*/
public interface HkGetSignalMethodService {
/**
* @description: 获取路口信号机的实时灯态数据
* @param baseSignals 信号机列表
* @return SignalInfoVo 信号机状态
* @author meng.wang
* @date 2020/09/10
*/
List<SignalLightStateVo> queryHkSignalInfo(List<BaseCrossInfo> baseSignals);
}
package net.wanji.utc.service;
package net.wanji.utc.service.control;
import net.wanji.utc.common.Result;
import net.wanji.utc.vo.PhaseLockVO;
import net.wanji.utc.vo.plansend.PlanSendVO;
import net.wanji.utc.vo.PlanSendVO;
import net.wanji.utc.vo.schedulesend.ScheduleSendVO;
import net.wanji.utc.vo.timeplan.TimePlanVO;
import java.util.List;
......@@ -25,87 +26,65 @@ public interface ControlCommandService {
*
* @param planSendVO 计划下发VO
* @return {@link Result}<{@link T}>
* @throws Exception 异常
*/
<T> Result<T> planSend(PlanSendVO planSendVO) throws Exception;
/**
* 时间表下发
*
* @param scheduleSendVO 时间表下发VO
* @return {@link Result}<{@link T}>
*/
<T> Result<T> scheduleSend(String signalId, String sourceType, String signalType, Integer command);
<T> Result<T> scheduleSend(ScheduleSendVO scheduleSendVO) throws Exception;
/**
* 锁定控制
*
* @param signalId 信号机编号
* @param phaseLock 相位锁定实体类
* @return {@link Result}<{@link T}>
* @throws Exception 异常
*/
<T> Result<T> lockControl(String signalId, PhaseLockVO phaseLock) throws Exception;
<T> Result<T> lockControl(PhaseLockVO phaseLock) throws Exception;
/**
* 步进控制
*
* @param signalId 信号机编号
* @param sourceType 厂家简称 QS/SCATS/HS/HK
* @param signalType 信号机类型 QS/SCATS/HS/HK
* @param code 信号机编号
* @param command 1 开始步进 0 取消步进
* @param stepNum 0 顺序步进 n 跳过n个相位
* @return {@link Result}<{@link T}>
* @throws Exception 异常
*/
<T> Result<T> stepControl(String signalId, String sourceType, String signalType, Integer command, Integer stepNum);
/**
* 全红控制
*
* @param signalId 信号机编号
* @param sourceType 厂家简称
* @param signalType 信号机类型
* @param command 1 全红控制 0 取消全红
* @return {@link Result}<{@link T}>
*/
<T> Result<T> allRedControl(String signalId, String sourceType, String signalType, Integer command);
/**
* 黄闪控制
*
* @param signalId 信号机编号
* @param sourceType 厂家简称
* @param signalType 信号机类型
* @param command 1 黄闪控制 0 取消黄闪
* @return {@link Result}<{@link T}>
*/
<T> Result<T> yellowLightControl(String signalId, String sourceType, String signalType, Integer command);
<T> Result<T> stepControl(String code, Integer command, Integer stepNum) throws Exception;
/**
* 关灯控制
* 设置信号机控制模式
*
* @param signalId 信号机编号
* @param sourceType 厂家简称
* @param signalType 信号机类型
* @param command 1 开灯 0 关灯
* @param code 信号机编号
* @param command 指令 1 开 0 关
* @param commandType 命令类型
* @return {@link Result}<{@link T}>
* @throws Exception 异常
*/
<T> Result<T> closeLightControl(String signalId, String sourceType, String signalType, Integer command);
<T> Result<T> setSignalControl(String code, Integer command, Integer commandType) throws Exception;
/**
* 恢复时间表
*
* @param signalId 信号机编号
* @param sourceType 厂家简称 QS/SCATS/HS/HK
* @param signalType 信号机类型 QS/SCATS/HS/HK
* @param command 1 恢复
* @param code 信号机编号
* @return {@link Result}<{@link T}>
*/
<T> Result<T> recoverSchedule(String signalId, String sourceType, String signalType, Integer command);
<T> Result<T> recoverSchedule(String code) throws Exception;
/**
* 相位配时下发
*
* @param code 信号机id
* @param timePlans 批量下发的配时数据
* @return {@link Result}<{@link T}>
* @throws InterruptedException 中断异常
*/
<T> Result<T> phaseTimingSend(List<TimePlanVO> timePlans);
<T> Result<T> phaseTimingSend(String code, List<TimePlanVO> timePlans) throws InterruptedException;
/**
* 相位差下发
......
package net.wanji.utc.util;
import com.alibaba.fastjson.JSON;
import net.wanji.utc.vo.PlanSendVO;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @author wuxiaokai
* @date 2022/11/24 15:37:26
*/
public class FieldUtil {
/**
* 将对象的属性转成 key - Value
*/
@SuppressWarnings("unchecked")
public static <T> Map<String, Object> fieldMethod(T t) throws IllegalAccessException {
if (t == null) {
return null;
}
Field[] fields = t.getClass().getDeclaredFields();
Map<String, Object> map = new HashMap<>(fields.length);
for (Field field : fields) {
field.setAccessible(true);
if (field.getType().equals(List.class)) {
List<Object> list = (List<Object>) field.get(t);
List<Map<String, Object>> list2 = new ArrayList<>(list.size());
for (Object o : list) {
Map<String, Object> map1 = fieldMethod(o);
list2.add(map1);
}
map.put(field.getName(), list2);
} else {
map.put(field.getName(), field.get(t));
}
}
return map;
}
}
......@@ -3,6 +3,7 @@ package net.wanji.utc.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import net.wanji.utc.common.baseentity.BaseCrossInfo;
/**
* 相位锁定实体类
......@@ -12,7 +13,7 @@ import lombok.Data;
*/
@Data
@ApiModel(value = "PhaseLockVO", description = "相位锁定实体类")
public class PhaseLockVO {
public class PhaseLockVO extends BaseCrossInfo {
/**
* 相位编号
......
package net.wanji.utc.vo;
import lombok.Getter;
import lombok.Setter;
import net.wanji.utc.common.baseentity.BaseCrossInfo;
import java.util.List;
/**
* @author wuxiaokai
* @date 2022/11/24 15:55:08
*/
@Setter
@Getter
public class PlanSendVO extends BaseCrossInfo {
private List<Data> data;
@Setter
@Getter
private static class Data {
private String crossCode;
private List<Plan> planList;
@Setter
@Getter
private static class Plan {
private String planNo;
private List<Section> sectionList;
@Setter
@Getter
private static class Section {
private String timeSecNo;
private String patternNo;
private String beginTime;
}
}
}
}
package net.wanji.utc.vo.schedulesend;
import lombok.Data;
import net.wanji.utc.common.baseentity.BaseCrossInfo;
import net.wanji.utc.vo.plansend.SpecialDay;
import net.wanji.utc.vo.plansend.Week;
import java.util.List;
/**
* 时间表下发VO
*
* @author wuxiaokai
* @date 2022/11/23 14:11:09
*/
@Data
public class ScheduleSendVO extends BaseCrossInfo {
/**
* 星期
*/
private List<Week> weeks;
/**
* 特殊日期
*/
private List<SpecialDay> specialDays;
}
......@@ -51,7 +51,7 @@
select
id,name,code,manufacturer_id,ip,port,location,version,model,install_time,gmt_create,gmt_modified
from t_cross_info
where id = #{code}
where code = #{code}
</select>
<select id="selectByManufacturerId" resultMap="BaseResultMap">
......
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