Commit c14ad762 authored by duanruiming's avatar duanruiming

静态数据-万集统一标准调用服务

parent 7dcd568f
...@@ -3,7 +3,6 @@ package net.wanji.utc.mapper; ...@@ -3,7 +3,6 @@ package net.wanji.utc.mapper;
import net.wanji.utc.po.CrossSchedulesPO; import net.wanji.utc.po.CrossSchedulesPO;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import java.util.ArrayList;
import java.util.List; import java.util.List;
/** /**
...@@ -13,7 +12,7 @@ import java.util.List; ...@@ -13,7 +12,7 @@ import java.util.List;
public interface CrossSchedulesMapper { public interface CrossSchedulesMapper {
void deleteByCrossId(@Param("crossId") String crossId); void deleteByCrossId(@Param("crossId") String crossId);
void insertBatch(@Param("entities") ArrayList<CrossSchedulesPO> crossSchedulesPOList); void insertBatch(@Param("entities") List<CrossSchedulesPO> crossSchedulesPOList);
List<CrossSchedulesPO> selectByCrossIds(@Param("crossIds") List<String> crossIdList); List<CrossSchedulesPO> selectByCrossIds(@Param("crossIds") List<String> crossIdList);
} }
package net.wanji.utc.service.common; package net.wanji.utc.service.common;
import net.wanji.utc.common.Result; import net.wanji.utc.common.Result;
import net.wanji.utc.po.CrossSchedulesPO;
import net.wanji.utc.vo.PlanSectionVO;
import net.wanji.utc.vo.SchemePhaseLightsVO; import net.wanji.utc.vo.SchemePhaseLightsVO;
import java.util.List;
/** /**
* @author duanruiming * @author duanruiming
* @date 2023/01/09 9:20 * @date 2023/01/09 9:20
...@@ -10,11 +14,28 @@ import net.wanji.utc.vo.SchemePhaseLightsVO; ...@@ -10,11 +14,28 @@ import net.wanji.utc.vo.SchemePhaseLightsVO;
public interface WanjiCommonStaticInfoService extends rpcService { public interface WanjiCommonStaticInfoService extends rpcService {
/** /**
* 静态参数,通过路口编号获取万集标准方案数据-方案信息、相位信息、灯组信息 * 静态参数,获取万集标准方案数据-方案信息、相位信息、灯组信息
* *
* @param crossId * @param crossId
* @param signalId * @param signalId
* @return * @return
*/ */
Result<SchemePhaseLightsVO> schemePhaseLights(String crossId, String signalId); Result<SchemePhaseLightsVO> schemePhaseLights(String crossId, String signalId);
/**
* 静态参数,获取计划数据-计划信息、时段信息
* @param crossId
* @param planNo
* @param signalId
* @return
*/
Result<PlanSectionVO> planSection(String crossId, String signalId, Integer planNo);
/**
* 静态参数,获取时间表数据
* @param crossId
* @param signalId
* @return
*/
Result<List<CrossSchedulesPO>> schedules(String crossId, String signalId);
} }
package net.wanji.utc.service.common.impl; package net.wanji.utc.service.common.impl;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import net.wanji.utc.common.Result; import net.wanji.utc.common.Result;
import net.wanji.utc.mapper.CrossLightsMapper; import net.wanji.utc.entity.JsonViewObject;
import net.wanji.utc.mapper.CrossPhaseLightsMapper; import net.wanji.utc.mapper.*;
import net.wanji.utc.mapper.CrossPhaseMapper; import net.wanji.utc.po.*;
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.service.common.WanjiCommonStaticInfoService;
import net.wanji.utc.util.HttpRestUtil; import net.wanji.utc.util.HttpRestUtil;
import net.wanji.utc.vo.PlanSectionVO;
import net.wanji.utc.vo.SchemePhaseLightsVO; import net.wanji.utc.vo.SchemePhaseLightsVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
...@@ -28,31 +24,29 @@ import java.util.Objects; ...@@ -28,31 +24,29 @@ import java.util.Objects;
* @author duanruiming * @author duanruiming
* @date 2023/01/09 9:21 * @date 2023/01/09 9:21
*/ */
@Service
@Slf4j @Slf4j
@Service
@RequiredArgsConstructor
public class WanjiCommonStaticInfoServiceImpl implements WanjiCommonStaticInfoService { public class WanjiCommonStaticInfoServiceImpl implements WanjiCommonStaticInfoService {
@Autowired private final HttpRestUtil httpRestUtil;
private HttpRestUtil httpRestUtil;
@Value("url") @Value("url")
private String rpcUri; private String rpcUri;
@Autowired private final CrossSchemeMapper crossSchemeMapper;
private CrossSchemeMapper crossSchemeMapper; private final CrossPhaseMapper crossPhaseMapper;
@Autowired private final CrossLightsMapper crossLightsMapper;
private CrossPhaseMapper crossPhaseMapper; private final CrossPhaseLightsMapper crossPhaseLightsMapper;
@Autowired private final CrossPlanMapper crossPlanMapper;
private CrossLightsMapper crossLightsMapper; private final CrossSectionMapper crossSectionMapper;
@Autowired private final CrossSchedulesMapper crossSchedulesMapper;
private CrossPhaseLightsMapper crossPhaseLightsMapper;
@Override @Override
public Result<SchemePhaseLightsVO> schemePhaseLights(String crossId, String signalId) { public Result<SchemePhaseLightsVO> schemePhaseLights(String crossId, String signalId) {
Map<String, String> paramMap = new HashMap<>(2); Map<String, String> commonParamMap = getCommonParamMap(crossId, signalId);
paramMap.put("crossId", crossId); JsonViewObject jsonViewObject = rpcService(rpcUri, null, JSONObject.toJSONString(commonParamMap));
paramMap.put("signalId", signalId); SchemePhaseLightsVO content = (SchemePhaseLightsVO) jsonViewObject.getContent();
Result<SchemePhaseLightsVO> result = rpcService(rpcUri, null, JSONObject.toJSONString(paramMap), SchemePhaseLightsVO.class); if (Objects.nonNull(content)) {
if (Objects.nonNull(result.getContent())) {
SchemePhaseLightsVO content = result.getContent();
List<CrossSchemePO> crossSchemeList = content.getCrossSchemeList(); List<CrossSchemePO> crossSchemeList = content.getCrossSchemeList();
crossSchemeList.forEach(crossSchemePO -> { crossSchemeList.forEach(crossSchemePO -> {
crossSchemeMapper.deleteOne(crossId, crossSchemePO.getSchemeNo()); crossSchemeMapper.deleteOne(crossId, crossSchemePO.getSchemeNo());
...@@ -75,16 +69,66 @@ public class WanjiCommonStaticInfoServiceImpl implements WanjiCommonStaticInfoSe ...@@ -75,16 +69,66 @@ public class WanjiCommonStaticInfoServiceImpl implements WanjiCommonStaticInfoSe
crossPhaseLightsMapper.insertBatch(crossPhaseLightsPOList); crossPhaseLightsMapper.insertBatch(crossPhaseLightsPOList);
} }
} }
return Result.success(); return Result.success(content);
} }
@Override @Override
public <T> Result<T> rpcService(String url, Map<String, String> headers, String param, Class<T> classType) { public Result<PlanSectionVO> planSection(String crossId, String signalId, Integer planNo) {
Result<T> result = httpRestUtil.doPost(url, headers, param, Result.class); Map<String, String> paramMap = new HashMap<>();
if (Objects.isNull(result) || result.getState() != 200) { paramMap.put("crossId", crossId);
paramMap.put("planNo", String.valueOf(planNo));
paramMap.put("signalId", signalId);
JsonViewObject jsonViewObject = rpcService(rpcUri, null, JSONObject.toJSONString(paramMap));
PlanSectionVO content = (PlanSectionVO) jsonViewObject.getContent();
if (Objects.nonNull(content)) {
if (Objects.nonNull(content)) {
List<CrossPlanPO> crossPlanPOList = content.getCrossPlanPOList();
crossPlanPOList.forEach(crossPlanPO -> {
crossPlanMapper.deleteOne(crossId, Integer.parseInt(crossPlanPO.getPlanNo()));
crossPlanMapper.insertOne(crossPlanPO);
});
List<CrossSectionPO> crossSectionPOList = content.getCrossSectionPOList();
crossSectionPOList.forEach(crossSectionPO -> {
crossSectionMapper.deleteOne(crossId, Integer.parseInt(crossSectionPO.getSectionNo()));
crossSectionMapper.insertOne(crossSectionPO);
});
}
}
return Result.success(content);
}
@Override
public Result<List<CrossSchedulesPO>> schedules(String crossId, String signalId) {
Map<String, String> commonParamMap = getCommonParamMap(crossId, signalId);
JsonViewObject jsonViewObject = rpcService(rpcUri, null, JSONObject.toJSONString(commonParamMap));
List<CrossSchedulesPO> content = (List<CrossSchedulesPO>) jsonViewObject.getContent();
if (Objects.nonNull(content)) {
if (!CollectionUtils.isEmpty(content)) {
content.forEach(crossSchedulesPO -> {
crossSchedulesMapper.deleteByCrossId(crossId);
crossSchedulesMapper.insertBatch(content);
});
}
}
return Result.success(content);
}
public static Map<String, String> getCommonParamMap(String crossId, String signalId) {
Map<String, String> paramMap = new HashMap<>();
paramMap.put("crossId", crossId);
paramMap.put("signalId", signalId);
return paramMap;
}
@Override
public JsonViewObject rpcService(String url, Map<String, String> headers, String param) {
JsonViewObject jsonViewObject = httpRestUtil.doPost(url, headers, param, JsonViewObject.class);
if (Objects.isNull(jsonViewObject) || jsonViewObject.getCode() != 200) {
log.error("远程服务调用异常,url:".concat(rpcUri)); log.error("远程服务调用异常,url:".concat(rpcUri));
return Result.error("获取万集标准信号机方案数据远程调用异常!"); return jsonViewObject.fail("远程服务调用异常,url:".concat(rpcUri));
} }
return result; return jsonViewObject;
} }
} }
package net.wanji.utc.service.common; package net.wanji.utc.service.common;
import net.wanji.utc.common.Result; import net.wanji.utc.entity.JsonViewObject;
import java.util.Map; import java.util.Map;
...@@ -11,15 +11,13 @@ import java.util.Map; ...@@ -11,15 +11,13 @@ import java.util.Map;
public interface rpcService { public interface rpcService {
/** /**
* 远程post调用 * 远程调用信号机设备
* @param url * @param url
* @param headers * @param headers
* @param param * @param param
* @param classType
* @return * @return
* @param <T>
*/ */
default <T> Result<T> rpcService(String url, Map<String, String> headers, String param, Class<T> classType) { default JsonViewObject rpcService(String url, Map<String, String> headers, String param) {
return Result.success(); return JsonViewObject.newInstance();
} }
} }
...@@ -14,6 +14,7 @@ import net.wanji.utc.vo.PlanSectionVO; ...@@ -14,6 +14,7 @@ import net.wanji.utc.vo.PlanSectionVO;
import net.wanji.utc.vo.SchemePhaseLightsVO; import net.wanji.utc.vo.SchemePhaseLightsVO;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
...@@ -103,6 +104,7 @@ public class StaticInfoServiceImpl implements StaticInfoService { ...@@ -103,6 +104,7 @@ public class StaticInfoServiceImpl implements StaticInfoService {
// 获取厂商ID和信号机ID // 获取厂商ID和信号机ID
CrossInfoPO crossInfoPO = crossInfoMapper.selectByPrimaryKey(crossId); CrossInfoPO crossInfoPO = crossInfoMapper.selectByPrimaryKey(crossId);
String crossCode = crossInfoPO.getCode(); String crossCode = crossInfoPO.getCode();
String crossInfoId = crossInfoPO.getId();
Integer manufacturerId = crossInfoPO.getManufacturerId(); Integer manufacturerId = crossInfoPO.getManufacturerId();
// 获取厂商代码 // 获取厂商代码
ManufacturerInfoPO manufacturerInfoPO = manufacturerInfoMapper.selectById(manufacturerId); ManufacturerInfoPO manufacturerInfoPO = manufacturerInfoMapper.selectById(manufacturerId);
...@@ -112,7 +114,7 @@ public class StaticInfoServiceImpl implements StaticInfoService { ...@@ -112,7 +114,7 @@ public class StaticInfoServiceImpl implements StaticInfoService {
// 海康 // 海康
hkPlanSectionService.planSection(crossCode, planNo, crossId); hkPlanSectionService.planSection(crossCode, planNo, crossId);
} else { } else {
// todo 其他厂商 wanjiCommonStaticInfoService.planSection(crossInfoId, crossCode, planNo);
} }
} }
...@@ -125,7 +127,12 @@ public class StaticInfoServiceImpl implements StaticInfoService { ...@@ -125,7 +127,12 @@ public class StaticInfoServiceImpl implements StaticInfoService {
// 海康 // 海康
hkCrossSchedulesService.crossSchedules(crossIdList); hkCrossSchedulesService.crossSchedules(crossIdList);
} else { } else {
// todo 其他厂商 if (!CollectionUtils.isEmpty(crossIdList)) {
String crossId = crossIdList.get(0);
CrossInfoPO crossInfoPO = crossInfoMapper.selectByPrimaryKey(crossId);
String signalIc = crossInfoPO.getCode();
wanjiCommonStaticInfoService.schedules(crossId, signalIc);
}
} }
} }
......
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