Commit 8cd6fd13 authored by duanruiming's avatar duanruiming

万集统一标准接口方案数据:方案信息、相位信息、灯组信息

parent 2daa1d36
......@@ -59,4 +59,5 @@ signal:
#远程signalUtcService服务地址
utcServiceUrl: http://10.100.1.59:32000/utc
#utcServiceUrl: http://127.0.0.1:32000/utc
syncDeviceSatusUrn: /signalStatus/runningStatusAlarm
\ No newline at end of file
package net.wanji.utc.service.common;
import net.wanji.utc.common.Result;
import net.wanji.utc.vo.SchemePhaseLightsVO;
/**
* @author duanruiming
* @date 2023/01/09 9:20
*/
public interface WanjiCommonStaticInfoService extends rpcService {
/**
* 静态参数,通过路口编号获取万集标准方案数据-方案信息、相位信息、灯组信息
*
* @param crossId
* @param signalId
* @return
*/
Result<SchemePhaseLightsVO> schemePhaseLights(String crossId, String signalId);
}
package net.wanji.utc.service.common.impl;
import com.alibaba.fastjson.JSONObject;
import lombok.extern.slf4j.Slf4j;
import net.wanji.utc.common.Result;
import net.wanji.utc.mapper.CrossLightsMapper;
import net.wanji.utc.mapper.CrossPhaseLightsMapper;
import net.wanji.utc.mapper.CrossPhaseMapper;
import net.wanji.utc.mapper.CrossSchemeMapper;
import net.wanji.utc.po.CrossLightsPO;
import net.wanji.utc.po.CrossPhaseLightsPO;
import net.wanji.utc.po.CrossPhasePO;
import net.wanji.utc.po.CrossSchemePO;
import net.wanji.utc.service.common.WanjiCommonStaticInfoService;
import net.wanji.utc.util.HttpRestUtil;
import net.wanji.utc.vo.SchemePhaseLightsVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
/**
* @author duanruiming
* @date 2023/01/09 9:21
*/
@Service
@Slf4j
public class WanjiCommonStaticInfoServiceImpl implements WanjiCommonStaticInfoService {
@Autowired
private HttpRestUtil httpRestUtil;
@Value("url")
private String rpcUri;
@Autowired
private CrossSchemeMapper crossSchemeMapper;
@Autowired
private CrossPhaseMapper crossPhaseMapper;
@Autowired
private CrossLightsMapper crossLightsMapper;
@Autowired
private CrossPhaseLightsMapper crossPhaseLightsMapper;
@Override
public Result<SchemePhaseLightsVO> schemePhaseLights(String crossId, String signalId) {
Map<String, String> paramMap = new HashMap<>(2);
paramMap.put("crossId", crossId);
paramMap.put("signalId", signalId);
Result<SchemePhaseLightsVO> result = rpcService(rpcUri, null, JSONObject.toJSONString(paramMap), SchemePhaseLightsVO.class);
if (Objects.nonNull(result.getContent())) {
SchemePhaseLightsVO content = result.getContent();
List<CrossSchemePO> crossSchemeList = content.getCrossSchemeList();
crossSchemeList.forEach(crossSchemePO -> {
crossSchemeMapper.deleteOne(crossId, crossSchemePO.getSchemeNo());
crossSchemeMapper.insertOne(crossSchemePO);
});
List<CrossPhasePO> crossPhaseList = content.getCrossPhaseList();
crossPhaseList.forEach(crossPhasePO -> {
crossPhaseMapper.deleteBatch(crossId, String.valueOf(crossPhasePO.getPlanId()));
crossPhaseMapper.insertOne(crossPhasePO);
});
List<CrossLightsPO> crossLightsList = content.getCrossLightsList();
crossLightsList.forEach(crossLightsPO -> {
crossLightsMapper.deleteOne(crossId, crossLightsPO.getName());
crossLightsMapper.insertOne(crossLightsPO);
});
List<CrossPhaseLightsPO> crossPhaseLightsPOList = content.getCrossPhaseLightsPOList();
if (!CollectionUtils.isEmpty(crossPhaseLightsPOList)) {
crossPhaseLightsMapper.deleteByCrossId(crossPhaseLightsPOList.get(0).getCrossId());
crossPhaseLightsMapper.insertBatch(crossPhaseLightsPOList);
}
}
return Result.success();
}
@Override
public <T> Result<T> rpcService(String url, Map<String, String> headers, String param, Class<T> classType) {
Result<T> result = httpRestUtil.doPost(url, headers, param, Result.class);
if (Objects.isNull(result) || result.getState() != 200) {
log.error("远程服务调用异常,url:".concat(rpcUri));
return Result.error("获取万集标准信号机方案数据远程调用异常!");
}
return result;
}
}
package net.wanji.utc.service.common;
import net.wanji.utc.common.Result;
import java.util.Map;
/**
* @author duanruiming
* @date 2023/01/09 9:57
*/
public interface rpcService {
/**
* 远程post调用
* @param url
* @param headers
* @param param
* @param classType
* @return
* @param <T>
*/
default <T> Result<T> rpcService(String url, Map<String, String> headers, String param, Class<T> classType) {
return Result.success();
}
}
......@@ -3,12 +3,13 @@ package net.wanji.utc.service.staticinfo.impl;
import lombok.RequiredArgsConstructor;
import net.wanji.utc.common.typeenum.BasicEnum;
import net.wanji.utc.dto.CrossInfoDTO;
import net.wanji.utc.mapper.*;
import net.wanji.utc.po.*;
import net.wanji.utc.service.staticinfo.*;
import net.wanji.utc.dto.CrossSchedulesDTO;
import net.wanji.utc.dto.PlanSectionDTO;
import net.wanji.utc.dto.SchemePhaseLightsDTO;
import net.wanji.utc.mapper.*;
import net.wanji.utc.po.*;
import net.wanji.utc.service.common.WanjiCommonStaticInfoService;
import net.wanji.utc.service.staticinfo.*;
import net.wanji.utc.vo.PlanSectionVO;
import net.wanji.utc.vo.SchemePhaseLightsVO;
import org.springframework.stereotype.Service;
......@@ -37,6 +38,7 @@ public class StaticInfoServiceImpl implements StaticInfoService {
private final CrossPlanMapper crossPlanMapper;
private final CrossSectionMapper crossSectionMapper;
private final CrossSchedulesMapper crossSchedulesMapper;
private final WanjiCommonStaticInfoService wanjiCommonStaticInfoService;
@Override
@Transactional
......@@ -87,8 +89,10 @@ public class StaticInfoServiceImpl implements StaticInfoService {
if (Objects.equals(BasicEnum.ManufacturerEnum.HK.getCode(), manufacturerCode)) {
// 海康
hkSchemePhaseLightsService.hkSchemePhaseLights(crossId, crossCode);
} else {
// todo 其他厂商
} else {
// 默认万集标准服务
wanjiCommonStaticInfoService.schemePhaseLights(crossId, crossCode);
}
}
......
......@@ -14,8 +14,10 @@ import org.springframework.web.client.HttpClientErrorException;
import org.springframework.web.client.ResourceAccessException;
import org.springframework.web.client.RestTemplate;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Objects;
@Component
public class HttpRestUtil {
......@@ -87,11 +89,12 @@ public class HttpRestUtil {
* @return T 返回结果
*/
public <T> T doPost(String url, Map<String, String> headers, String param, Class<T> classType) {
Map<String, String> header = Objects.isNull(headers) || headers.isEmpty() == true ? buildHeader() : headers;
long startTime = System.currentTimeMillis();
LOGGER.info("\n 请求地址 = {} || 请求方式 = {} || 请求头 = {} || 请求参数 = {}",
url, "POST", JSON.toJSONString(headers), JSON.toJSONString(param));
url, "POST", JSON.toJSONString(header), JSON.toJSONString(param));
//封装httpEntity
HttpEntity httpEntity = getHttpEntity(headers, param);
HttpEntity httpEntity = getHttpEntity(header, param);
ResponseEntity<T> responseEntity;
try {
responseEntity = restTemplate.postForEntity(url, httpEntity, classType);
......@@ -152,11 +155,12 @@ public class HttpRestUtil {
* @return String 返回结果
*/
public String doExecute(String url, Map<String, String> headers, HttpMethod method, String param) {
Map<String, String> header = Objects.isNull(headers) || headers.isEmpty() == true ? buildHeader() : headers;
long startTime = System.currentTimeMillis();
LOGGER.info("\n 请求地址 = {} || 请求方式 = {} || 请求头 = {} || 请求参数 = {}",
url, method.name(), JSON.toJSONString(headers), JSON.toJSONString(param));
url, method.name(), JSON.toJSONString(header), JSON.toJSONString(param));
//封装httpEntity
HttpEntity httpEntity = getHttpEntity(headers, param);
HttpEntity httpEntity = getHttpEntity(header, param);
//发送请求
ResponseEntity<String> responseEntity;
try {
......@@ -278,4 +282,11 @@ public class HttpRestUtil {
}
return new HttpEntity(param, httpHeaders);
}
private static Map<String, String> buildHeader() {
Map<String, String> header = new HashMap<>();
header.put("Content-Type","application/json; charset=UTF-8");
header.put("Accept", MediaType.APPLICATION_JSON.toString());
return header;
}
}
......@@ -2,6 +2,7 @@ package net.wanji.utc.vo;
import lombok.Data;
import net.wanji.utc.po.CrossLightsPO;
import net.wanji.utc.po.CrossPhaseLightsPO;
import net.wanji.utc.po.CrossPhasePO;
import net.wanji.utc.po.CrossSchemePO;
......@@ -16,4 +17,5 @@ public class SchemePhaseLightsVO {
private List<CrossSchemePO> crossSchemeList;
private List<CrossPhasePO> crossPhaseList;
private List<CrossLightsPO> crossLightsList;
private List<CrossPhaseLightsPO> crossPhaseLightsPOList;
}
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