Commit 1fc2f3c0 authored by hanbing's avatar hanbing

静态信息接口-方案数据-灯组信息、灯组相位关系

parent 716d3d0b
package net.wanji.utc.common.typeenum;
import lombok.AllArgsConstructor;
import lombok.Getter;
import java.util.Objects;
/**
* @author Kent HAN
* @date 2022/11/18 13:33
*/
@Getter
@AllArgsConstructor
public enum HkLightsDirEnum {
ONE(5, 1),
TWO(1, 2),
THREE(3, 3),
FOUR(7, 4),
FIVE(6, 5),
SIX(8, 6),
SEVEN(4, 7),
EIGHT(2, 8),
NINE(1, 9),
TEN(5, 10),
ELEVEN(7, 11),
TWELVE(3, 12);
private Integer code;
private Integer hkCode;
public static Integer getCodeByHkCode(Integer hkCode) {
for (HkLightsDirEnum value : values()) {
if (Objects.equals(hkCode, value.getHkCode())) {
return value.getCode();
}
}
return null;
}
}
package net.wanji.utc.common.typeenum;
import lombok.AllArgsConstructor;
import lombok.Getter;
import java.util.Objects;
/**
* @author Kent HAN
* @date 2022/11/18 13:33
*/
@Getter
@AllArgsConstructor
public enum HkLightsTurnEnum {
ONE(3, 1),
TWO(1, 2),
THREE(2, 3),
FOUR(4, 4),
FIVE(5, 5),
SIX(6, 6),
SEVEN(20, 7),
EIGHT(14, 8),
NINE(15, 9),
TEN(10, 10);
private Integer code;
private Integer hkCode;
public static Integer getCodeByHkCode(Integer hkCode) {
for (HkLightsTurnEnum value : values()) {
if (Objects.equals(hkCode, value.getHkCode())) {
return value.getCode();
}
}
return null;
}
}
package net.wanji.utc.common.typeenum;
import lombok.AllArgsConstructor;
import lombok.Getter;
import java.util.Objects;
/**
* @author Kent HAN
* @date 2022/11/18 13:33
*/
@Getter
@AllArgsConstructor
public enum HkLightsTypeEnum {
TEN(2, 10),
ELEVEN(1, 11),
TWELVE(1, 12),
THIRTEEN(1, 13),
FOURTEEN(1, 14),
THIRTY_ONE(3, 31);
private Integer code;
private Integer hkCode;
public static Integer getCodeByHkCode(Integer hkCode) {
for (HkLightsTypeEnum value : values()) {
if (Objects.equals(hkCode, value.getHkCode())) {
return value.getCode();
}
}
return null;
}
}
...@@ -2,6 +2,8 @@ package net.wanji.utc.entity.cache; ...@@ -2,6 +2,8 @@ package net.wanji.utc.entity.cache;
import lombok.Data; import lombok.Data;
import java.util.List;
/** /**
* @author Kent HAN * @author Kent HAN
* @date 2022/11/18 9:12 * @date 2022/11/18 9:12
...@@ -15,4 +17,5 @@ public class PhaseCache { ...@@ -15,4 +17,5 @@ public class PhaseCache {
private Integer phaseLength; // 相位时间 private Integer phaseLength; // 相位时间
private Integer schemeId; // 方案ID private Integer schemeId; // 方案ID
private Integer phaseId; // 相位ID private Integer phaseId; // 相位ID
private List<Integer> laneNoList; // 车道号列表
} }
package net.wanji.utc.mapper;
import net.wanji.utc.po.CrossLightsPO;
import org.apache.ibatis.annotations.Param;
/**
* @author Kent HAN
* @date 2022/11/18 14:10
*/
public interface CrossLightsMapper {
void deleteOne(@Param("crossId") String crossId, @Param("lightsNo") String lightsNo);
void insertOne(CrossLightsPO crossLightsPO);
}
package net.wanji.utc.mapper;
import net.wanji.utc.po.CrossPhaseLightsPO;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* @author Kent HAN
* @date 2022/11/18 14:10
*/
public interface CrossPhaseLightsMapper {
void deleteByCrossId(@Param("crossId") String crossId);
void insertBatch(@Param("entities") List<CrossPhaseLightsPO> crossPhaseLightsPOList);
}
package net.wanji.utc.po;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
/**
* @author Kent HAN
* @date 2022/11/18 13:20
*/
@Data
public class CrossLightsPO {
/** 灯组ID */
@ApiModelProperty(name = "灯组ID",notes = "")
private Integer id ;
/** 灯组号 */
@ApiModelProperty(name = "灯组号",notes = "")
private String lightsNo ;
/** 灯组名称 */
@ApiModelProperty(name = "灯组名称",notes = "")
private String name ;
/** 灯组类型:1箭头;2圆饼,3行人 */
@ApiModelProperty(name = "灯组类型:1箭头2圆饼3行人",notes = "")
private Integer type ;
/** 灯组方向:1北;2东北;3东;4东南;5南;6西南;7西;8西北 */
@ApiModelProperty(name = "灯组方向:1北;2东北;3东;4东南;5南;6西南;7西;8西北",notes = "")
private Integer dir ;
/** 灯组转向:1左转;2右转;3直行;4左掉头;5直左;6直右;7右掉头;8向左合流;9向右合流;10左转加掉头;11右转加掉头;12直行加左掉头;13直行加右掉头;14左转右转;15左直右;16左转右转加掉头;17左直掉头;18左直右掉头;20行人 */
@ApiModelProperty(name = "灯组转向:1左转;2右转;3直行;4左掉头;5直左;6直右;7右掉头;8向左合流;9向右合流;10左转加掉头;11右转加掉头;12直行加左掉头;13直行加右掉头;14左转右转;15左直右;16左转右转加掉头;17左直掉头;18左直右掉头;20行人",notes = "")
private Integer turn ;
/** 路口ID */
@ApiModelProperty(name = "路口ID",notes = "")
private String crossId ;
/** 行人进出口:1进口;2出口,3进出口 */
@ApiModelProperty(name = "行人进出口:1进口2出口,3进出口",notes = "")
private Integer inOutType ;
/** 创建时间 */
@ApiModelProperty(name = "创建时间",notes = "")
private Date gmtCreate ;
/** 修改时间 */
@ApiModelProperty(name = "修改时间",notes = "")
private Date gmtModified ;
}
package net.wanji.utc.po;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
/**
* @author Kent HAN
* @date 2022/11/18 14:32
*/
@Data
public class CrossPhaseLightsPO {
/** 主键 */
@ApiModelProperty(name = "主键",notes = "")
private Integer id ;
/** 灯组ID */
@ApiModelProperty(name = "灯组ID",notes = "")
private Integer lightsId ;
/** 相位ID */
@ApiModelProperty(name = "相位ID",notes = "")
private Integer phaseId ;
/** 路口ID */
@ApiModelProperty(name = "路口ID",notes = "")
private String crossId ;
/** 创建时间 */
@ApiModelProperty(name = "创建时间",notes = "")
private Date gmtCreate ;
/** 修改时间 */
@ApiModelProperty(name = "修改时间",notes = "")
private Date gmtModified ;
}
...@@ -8,9 +8,16 @@ import com.hikvision.artemis.sdk.config.ArtemisConfig; ...@@ -8,9 +8,16 @@ import com.hikvision.artemis.sdk.config.ArtemisConfig;
import net.wanji.utc.common.commonentity.HttpRequest; import net.wanji.utc.common.commonentity.HttpRequest;
import net.wanji.utc.common.constant.Constants; import net.wanji.utc.common.constant.Constants;
import net.wanji.utc.common.typeenum.BasicEnum; import net.wanji.utc.common.typeenum.BasicEnum;
import net.wanji.utc.common.typeenum.HkLightsDirEnum;
import net.wanji.utc.common.typeenum.HkLightsTurnEnum;
import net.wanji.utc.common.typeenum.HkLightsTypeEnum;
import net.wanji.utc.entity.cache.PhaseCache; import net.wanji.utc.entity.cache.PhaseCache;
import net.wanji.utc.mapper.CrossLightsMapper;
import net.wanji.utc.mapper.CrossPhaseLightsMapper;
import net.wanji.utc.mapper.CrossPhaseMapper; import net.wanji.utc.mapper.CrossPhaseMapper;
import net.wanji.utc.mapper.CrossSchemeMapper; 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.CrossPhasePO;
import net.wanji.utc.po.CrossSchemePO; import net.wanji.utc.po.CrossSchemePO;
import net.wanji.utc.service.HkSchemePhaseLightsService; import net.wanji.utc.service.HkSchemePhaseLightsService;
...@@ -18,10 +25,7 @@ import org.springframework.beans.factory.annotation.Autowired; ...@@ -18,10 +25,7 @@ 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 java.util.ArrayList; import java.util.*;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/** /**
* 方案数据-方案信息、相位信息 * 方案数据-方案信息、相位信息
...@@ -31,7 +35,7 @@ import java.util.Map; ...@@ -31,7 +35,7 @@ import java.util.Map;
*/ */
@Service @Service
public class HkSchemePhaseLightsServiceImpl implements HkSchemePhaseLightsService { public class HkSchemePhaseLightsServiceImpl implements HkSchemePhaseLightsService {
// 相位信息缓存 // 相位信息缓存,key-相位号,value-相位信息对象
public static Map<Integer, PhaseCache> phaseCacheMap = new HashMap<>(); public static Map<Integer, PhaseCache> phaseCacheMap = new HashMap<>();
@Value("${signal.manufacturer.hk.artemisPath}") @Value("${signal.manufacturer.hk.artemisPath}")
...@@ -42,116 +46,193 @@ public class HkSchemePhaseLightsServiceImpl implements HkSchemePhaseLightsServic ...@@ -42,116 +46,193 @@ public class HkSchemePhaseLightsServiceImpl implements HkSchemePhaseLightsServic
CrossSchemeMapper crossSchemeMapper; CrossSchemeMapper crossSchemeMapper;
@Autowired @Autowired
CrossPhaseMapper crossPhaseMapper; CrossPhaseMapper crossPhaseMapper;
@Autowired
CrossLightsMapper crossLightsMapper;
@Autowired
CrossPhaseLightsMapper crossPhaseLightsMapper;
@Override @Override
public void hkSchemePhaseLights(String crossId, String crossCode) throws Exception { public void hkSchemePhaseLights(String crossId, String crossCode) throws Exception {
List<CrossSchemePO> crossSchemePOList = new ArrayList<>(); List<CrossSchemePO> crossSchemePOList = new ArrayList<>();
// 请求3.1.3接口 // 请求3.1.3接口,获取并处理方案数据
Map<String, String> path313 = getPathMapByApiCode("uploadPatternCodeList"); Map<String, String> path = getPathMapByApiCode("uploadPatternCodeList");
Map<String, String> queryMap313 = new HashMap<>(); Map<String, String> queryMap = new HashMap<>();
queryMap313.put("crossCode", crossCode); queryMap.put("crossCode", crossCode);
String Result313 = ArtemisHttpUtil.doPostStringArtemis(artemisConfig, path313, null, queryMap313, String Result = ArtemisHttpUtil.doPostStringArtemis(artemisConfig, path, null, queryMap,
null, "application/json", null); null, "application/json", null);
JSONObject object313 = JSON.parseObject(Result313); JSONObject object = JSON.parseObject(Result);
if(Constants.HK_SUCCESS_CODE.equals(object313.getInteger(Constants.HK_CODE_KEY))) { if(Constants.HK_SUCCESS_CODE.equals(object.getInteger(Constants.HK_CODE_KEY))) {
JSONArray data313 = object313.getJSONArray("data"); JSONArray data = object.getJSONArray("data");
for (int i = 0; i < data313.size(); i++) { for (int i = 0; i < data.size(); i++) {
JSONObject obj313 = data313.getJSONObject(i); JSONObject obj = data.getJSONObject(i);
Integer patternNo = obj313.getInteger("patternNo"); Integer patternNo = obj.getInteger("patternNo");
String patternName = obj313.getString("patternName"); String patternName = obj.getString("patternName");
// 请求3.1.4接口 // 请求3.1.4接口,获取并处理方案数据
Map<String, String> path314 = getPathMapByApiCode("getCrossPlanDetail"); handleSchemeData(crossId, crossCode, crossSchemePOList, patternNo, patternName);
Map<String, String> queryMap314 = new HashMap<>(); }
queryMap314.put("crossCode", crossCode); }
queryMap314.put("patternNo", patternNo.toString()); // 请求3.1.11接口,获取并处理相位数据
String Result314 = ArtemisHttpUtil.doPostStringArtemis(artemisConfig, path314, null, queryMap314, handlePhaseData(crossId, crossCode);
null, "application/json", null); // 请求3.1.2接口,获取并处理灯组数据
JSONObject object314 = JSON.parseObject(Result314); List<CrossPhaseLightsPO> crossPhaseLightsPOList = handleLightsData(crossId, crossCode);
if(Constants.HK_SUCCESS_CODE.equals(object314.getInteger(Constants.HK_CODE_KEY))) { // 更新相位-灯组关系
JSONArray data314 = object314.getJSONArray("data"); crossPhaseLightsMapper.deleteByCrossId(crossId);
for (int j = 0; j < data314.size(); j++) { crossPhaseLightsMapper.insertBatch(crossPhaseLightsPOList);
JSONObject obj314 = data314.getJSONObject(j); }
Integer cycle = obj314.getInteger("cycle");
Integer coordPhase = obj314.getInteger("coordPhase");
Integer offset = obj314.getInteger("offset");
// 构造数据库记录
CrossSchemePO crossSchemePO = new CrossSchemePO();
crossSchemePO.setSchemeNo(patternNo.toString());
crossSchemePO.setName(patternName);
crossSchemePO.setCrossId(crossId);
crossSchemePO.setCycle(cycle);
crossSchemePO.setCoordPhase(coordPhase);
crossSchemePO.setOffset(offset);
crossSchemePO.setSource(2);
crossSchemePO.setIsDeleted(0);
crossSchemePOList.add(crossSchemePO);
// 插入数据返回自增ID
crossSchemeMapper.deleteOne(crossId, patternNo.toString());
crossSchemeMapper.insertOne(crossSchemePO);
Integer schemePOId = crossSchemePO.getId();
// 缓存相位信息,key-相位号,value-相位信息对象
putPhaseCache(obj314, schemePOId);
}
}
// 请求3.1.11接口,获取并处理相位数据 private List<CrossPhaseLightsPO> handleLightsData(String crossId, String crossCode) throws Exception {
Map<String, String> path3111 = getPathMapByApiCode("getPhaseRlatLanes"); Map<String, String> path = getPathMapByApiCode("getCrossInfo");
Map<String, String> queryMap3111 = new HashMap<>(); List<CrossPhaseLightsPO> crossPhaseLightsPOList = new ArrayList<>();
queryMap3111.put("crossCode", crossCode); JSONObject requestContent = new JSONObject();
String Result3111 = ArtemisHttpUtil.doPostStringArtemis(artemisConfig, path3111, null, queryMap3111, // 海康固定入参字段名
null, "application/json", null); requestContent.put("pageNo", 1);
JSONObject object3111 = JSON.parseObject(Result3111); requestContent.put("pageSize", 9999);
if(Constants.HK_SUCCESS_CODE.equals(object3111.getInteger(Constants.HK_CODE_KEY))) { JSONObject searchObj = new JSONObject();
JSONObject data3111 = object3111.getJSONObject("data"); requestContent.put("searchObj", searchObj);
JSONArray list3111 = data3111.getJSONArray("phaseList"); ArrayList<String> codeLst = new ArrayList<>();
for (int k = 0; k < list3111.size(); k++) { codeLst.add(crossCode);
CrossPhasePO crossPhasePO = new CrossPhasePO(); searchObj.put("codeLst", codeLst);
JSONObject phase3111 = list3111.getJSONObject(k); String body = requestContent.toJSONString();
Integer phaseNo = phase3111.getInteger("phaseNo"); // 请求参数
// 从缓存中获取数据 String responseStr = ArtemisHttpUtil.doPostStringArtemis(artemisConfig, path, body, null,
PhaseCache phaseCache = phaseCacheMap.get(phaseNo); null, "application/json", null);
crossPhasePO.setPhaseNo(phaseCache.getPhaseNo().toString()); JSONObject responseObj = JSON.parseObject(responseStr);
crossPhasePO.setName(phaseCache.getPhaseName()); if(Constants.HK_SUCCESS_CODE.equals(responseObj.getInteger(Constants.HK_CODE_KEY))) {
crossPhasePO.setSort(phaseCache.getPhaseSequence()); JSONObject data = responseObj.getJSONObject("data");
crossPhasePO.setCrossId(crossId); JSONArray list = data.getJSONArray("list");
crossPhasePO.setPlanId(phaseCache.getSchemeId()); for(int i = 0; i < list.size(); i++){
crossPhasePO.setRingNo(phaseCache.getRingNo()); JSONObject crossObj = list.getJSONObject(i);
crossPhasePO.setControlMode(1); // 海康均为定周期 JSONArray laneEles = crossObj.getJSONArray("laneEles");
Integer phaseLength = phaseCache.getPhaseLength(); for (int j = 0; j < laneEles.size(); j++) {
crossPhasePO.setPhaseTime(phaseLength); JSONObject laneObj = laneEles.getJSONObject(j);
// 从接口返回对象中获取数据 CrossLightsPO crossLightsPO = new CrossLightsPO();
Integer greenFlash = phase3111.getInteger("greenFlash"); String lightsNo = laneObj.getString("elementId");
crossPhasePO.setGreenFlashTime(greenFlash); crossLightsPO.setLightsNo(lightsNo);
Integer yellow = phase3111.getInteger("yellow"); Integer lampGroupType = laneObj.getInteger("lampGroupType");
crossPhasePO.setYellowTime(yellow); Integer type = HkLightsTypeEnum.getCodeByHkCode(lampGroupType);
Integer allred = phase3111.getInteger("allred"); crossLightsPO.setType(type);
crossPhasePO.setRedTime(allred); Integer direction = laneObj.getInteger("direction");
int green = phaseLength - greenFlash - yellow - allred; Integer dir = HkLightsDirEnum.getCodeByHkCode(direction);
crossPhasePO.setGreenTime(green); crossLightsPO.setDir(dir);
Integer minGreen = phase3111.getInteger("minGreen"); Integer turn = laneObj.getInteger("turn");
crossPhasePO.setMinGreenTime(minGreen); turn = HkLightsTurnEnum.getCodeByHkCode(turn);
Integer maxGreen = phase3111.getInteger("maxGreen"); crossLightsPO.setTurn(turn);
crossPhasePO.setMaxGreenTime(maxGreen); crossLightsPO.setCrossId(crossId);
// 插入数据返回自增ID,更新缓存 crossLightsPO.setInOutType(3); // 海康都是进出口
crossPhaseMapper.deleteOne(crossId, phaseNo.toString()); // 插入数据返回自增ID
crossPhaseMapper.insertOne(crossPhasePO); crossLightsMapper.deleteOne(crossId, lightsNo);
Integer crossPhasePOId = crossPhasePO.getId(); crossLightsMapper.insertOne(crossLightsPO);
PhaseCache phaseCache3111 = phaseCacheMap.get(phaseNo); Integer crossLightsPOId = crossLightsPO.getId();
phaseCache3111.setPhaseId(crossPhasePOId); // 匹配缓存信息,构造相位灯组关系对象列表
Integer laneNo = laneObj.getInteger("laneNo");
Collection<PhaseCache> phaseCaches = phaseCacheMap.values();
for (PhaseCache phaseCache : phaseCaches) {
List<Integer> laneNoList = phaseCache.getLaneNoList();
for (Integer laneNoInCache : laneNoList) {
if (Objects.equals(laneNo, laneNoInCache)) {
CrossPhaseLightsPO crossPhaseLightsPO = new CrossPhaseLightsPO();
crossPhaseLightsPO.setLightsId(crossLightsPOId);
crossPhaseLightsPO.setPhaseId(phaseCache.getPhaseId());
crossPhaseLightsPO.setCrossId(crossId);
crossPhaseLightsPOList.add(crossPhaseLightsPO);
}
}
} }
} }
} }
} }
return crossPhaseLightsPOList;
}
private void handlePhaseData(String crossId, String crossCode) throws Exception {
Map<String, String> path = getPathMapByApiCode("getPhaseRlatLanes");
Map<String, String> queryMap = new HashMap<>();
queryMap.put("crossCode", crossCode);
String Result = ArtemisHttpUtil.doPostStringArtemis(artemisConfig, path, null, queryMap,
null, "application/json", null);
JSONObject object = JSON.parseObject(Result);
if(Constants.HK_SUCCESS_CODE.equals(object.getInteger(Constants.HK_CODE_KEY))) {
JSONObject data = object.getJSONObject("data");
JSONArray list = data.getJSONArray("phaseList");
for (int k = 0; k < list.size(); k++) {
CrossPhasePO crossPhasePO = new CrossPhasePO();
JSONObject phase = list.getJSONObject(k);
Integer phaseNo = phase.getInteger("phaseNo");
// 从缓存中获取数据
PhaseCache phaseCache = phaseCacheMap.get(phaseNo);
crossPhasePO.setPhaseNo(phaseCache.getPhaseNo().toString());
crossPhasePO.setName(phaseCache.getPhaseName());
crossPhasePO.setSort(phaseCache.getPhaseSequence());
crossPhasePO.setCrossId(crossId);
crossPhasePO.setPlanId(phaseCache.getSchemeId());
crossPhasePO.setRingNo(phaseCache.getRingNo());
crossPhasePO.setControlMode(1); // 海康均为定周期
Integer phaseLength = phaseCache.getPhaseLength();
crossPhasePO.setPhaseTime(phaseLength);
// 从接口返回对象中获取数据
Integer greenFlash = phase.getInteger("greenFlash");
crossPhasePO.setGreenFlashTime(greenFlash);
Integer yellow = phase.getInteger("yellow");
crossPhasePO.setYellowTime(yellow);
Integer allred = phase.getInteger("allred");
crossPhasePO.setRedTime(allred);
int green = phaseLength - greenFlash - yellow - allred;
crossPhasePO.setGreenTime(green);
Integer minGreen = phase.getInteger("minGreen");
crossPhasePO.setMinGreenTime(minGreen);
Integer maxGreen = phase.getInteger("maxGreen");
crossPhasePO.setMaxGreenTime(maxGreen);
// 插入数据返回自增ID,更新缓存
crossPhaseMapper.deleteOne(crossId, phaseNo.toString());
crossPhaseMapper.insertOne(crossPhasePO);
Integer crossPhasePOId = crossPhasePO.getId();
phaseCache.setPhaseId(crossPhasePOId);
}
}
}
// 返回路口、相位、车道列表,用于构造相位-灯组关系表 private void handleSchemeData(String crossId, String crossCode, List<CrossSchemePO> crossSchemePOList, Integer patternNo, String patternName) throws Exception {
Map<String, String> path = getPathMapByApiCode("getCrossPlanDetail");
Map<String, String> queryMap = new HashMap<>();
queryMap.put("crossCode", crossCode);
queryMap.put("patternNo", patternNo.toString());
String Result = ArtemisHttpUtil.doPostStringArtemis(artemisConfig, path, null, queryMap,
null, "application/json", null);
JSONObject object = JSON.parseObject(Result);
if(Constants.HK_SUCCESS_CODE.equals(object.getInteger(Constants.HK_CODE_KEY))) {
JSONArray data = object.getJSONArray("data");
for (int j = 0; j < data.size(); j++) {
JSONObject obj = data.getJSONObject(j);
Integer cycle = obj.getInteger("cycle");
Integer coordPhase = obj.getInteger("coordPhase");
Integer offset = obj.getInteger("offset");
// 构造数据库记录
CrossSchemePO crossSchemePO = new CrossSchemePO();
crossSchemePO.setSchemeNo(patternNo.toString());
crossSchemePO.setName(patternName);
crossSchemePO.setCrossId(crossId);
crossSchemePO.setCycle(cycle);
crossSchemePO.setCoordPhase(coordPhase);
crossSchemePO.setOffset(offset);
crossSchemePO.setSource(2);
crossSchemePO.setIsDeleted(0);
crossSchemePOList.add(crossSchemePO);
// 插入数据返回自增ID
crossSchemeMapper.deleteOne(crossId, patternNo.toString());
crossSchemeMapper.insertOne(crossSchemePO);
Integer schemePOId = crossSchemePO.getId();
// 缓存相位信息
putPhaseCache(obj, schemePOId);
}
}
} }
private void putPhaseCache(JSONObject obj, Integer schemePOId) { private void putPhaseCache(JSONObject obj, Integer schemePOId) {
phaseCacheMap.clear(); phaseCacheMap.clear();
JSONArray phases = obj.getJSONArray("phaseInfos"); JSONArray phases = obj.getJSONArray("phaseInfos");
for (int n = 0; n < phases.size(); n++) { for (int i = 0; i < phases.size(); i++) {
JSONObject phase = phases.getJSONObject(n); JSONObject phase = phases.getJSONObject(i);
PhaseCache phaseCache = new PhaseCache(); PhaseCache phaseCache = new PhaseCache();
Integer ringNo = phase.getInteger("ringNo"); Integer ringNo = phase.getInteger("ringNo");
phaseCache.setRingNo(ringNo); phaseCache.setRingNo(ringNo);
...@@ -164,6 +245,15 @@ public class HkSchemePhaseLightsServiceImpl implements HkSchemePhaseLightsServic ...@@ -164,6 +245,15 @@ public class HkSchemePhaseLightsServiceImpl implements HkSchemePhaseLightsServic
Integer phaseLength = phase.getInteger("phaseLength"); Integer phaseLength = phase.getInteger("phaseLength");
phaseCache.setPhaseLength(phaseLength); phaseCache.setPhaseLength(phaseLength);
phaseCache.setSchemeId(schemePOId); phaseCache.setSchemeId(schemePOId);
// 获取车道列表
JSONArray lanes = phase.getJSONArray("lanes");
List<Integer> laneNoList = new ArrayList<>();
for (int j = 0; j < lanes.size(); j++) {
JSONObject lane = lanes.getJSONObject(j);
Integer laneNo = lane.getInteger("laneNo");
laneNoList.add(laneNo);
}
phaseCache.setLaneNoList(laneNoList);
phaseCacheMap.put(phaseNo, phaseCache); phaseCacheMap.put(phaseNo, phaseCache);
} }
} }
......
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="net.wanji.utc.mapper.CrossLightsMapper">
<resultMap type="net.wanji.utc.po.CrossLightsPO" id="BaseResultMap">
<result property="id" column="id"/>
<result property="lightsNo" column="lights_no"/>
<result property="name" column="name"/>
<result property="type" column="type"/>
<result property="dir" column="dir"/>
<result property="turn" column="turn"/>
<result property="crossId" column="cross_id"/>
<result property="inOutType" column="in_out_type"/>
<result property="gmtCreate" column="gmt_create"/>
<result property="gmtModified" column="gmt_modified"/>
</resultMap>
<insert id="insertOne" keyProperty="id" useGeneratedKeys="true">
insert into t_cross_lights(lights_no,name,type,dir,turn,cross_id,in_out_type)
values (#{lightsNo},#{name},#{type},#{dir},#{turn},#{crossId},#{inOutType})
</insert>
<delete id="deleteOne">
delete from t_cross_lights
where cross_id = #{crossId} and lights_no = #{lightsNo}
</delete>
</mapper>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="net.wanji.utc.mapper.CrossPhaseLightsMapper">
<resultMap type="net.wanji.utc.po.CrossPhaseLightsPO" id="BaseResultMap">
<result property="id" column="id"/>
<result property="lightsId" column="lights_id"/>
<result property="phaseId" column="phase_id"/>
<result property="crossId" column="cross_id"/>
<result property="gmtCreate" column="gmt_create"/>
<result property="gmtModified" column="gmt_modified"/>
</resultMap>
<!-- 批量新增数据 -->
<insert id="insertBatch" keyProperty="id" useGeneratedKeys="true">
insert into t_cross_phase_lights(lights_id,phase_id,cross_id)
values
<foreach collection="entities" item="entity" separator=",">
(#{entity.lightsId},#{entity.phaseId},#{entity.crossId})
</foreach>
</insert>
<delete id="deleteByCrossId">
delete from t_cross_phase_lights
where cross_id = #{crossId}
</delete>
</mapper>
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