Commit d0bc74ef authored by 黄伟铭's avatar 黄伟铭

Merge remote-tracking branch 'origin/master'

parents 4d4bb296 9738cae8
package net.wanji.opt.config; //package net.wanji.opt.config;
//
import org.springframework.beans.factory.annotation.Value; //import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean; //import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; //import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory; //import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory; //import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate; //import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.StringRedisSerializer; //import org.springframework.data.redis.serializer.StringRedisSerializer;
//
@Configuration //@Configuration
public class RestTemplateConfig { //public class RestTemplateConfig {
//
@Value("${spring.redis.host}") // @Value("${spring.redis.host}")
private String redisHost; // private String redisHost;
//
@Value("${spring.redis.port}") // @Value("${spring.redis.port}")
private int redisPort; // private int redisPort;
//
@Value("${spring.redis.database}") // @Value("${spring.redis.database}")
private int redisDatabase; // private int redisDatabase;
//
@Value("${spring.redis.password}") // @Value("${spring.redis.password}")
private String redisPassword; // private String redisPassword;
//
//
// 默认使用配置的数据库 // // 默认使用配置的数据库
@Bean // @Bean
public RedisConnectionFactory redisConnectionFactory() { // public RedisConnectionFactory redisConnectionFactory() {
LettuceConnectionFactory factory = new LettuceConnectionFactory(redisHost, redisPort); // LettuceConnectionFactory factory = new LettuceConnectionFactory(redisHost, redisPort);
factory.setPassword(redisPassword); // factory.setPassword(redisPassword);
factory.setDatabase(redisDatabase); // factory.setDatabase(redisDatabase);
return factory; // return factory;
} // }
//
@Bean(name = "redisTemplate") // @Bean(name = "redisTemplate")
public RedisTemplate<String, Object> redisTemplate() { // public RedisTemplate<String, Object> redisTemplate() {
RedisTemplate<String, Object> template = new RedisTemplate<>(); // RedisTemplate<String, Object> template = new RedisTemplate<>();
template.setConnectionFactory(redisConnectionFactory()); // template.setConnectionFactory(redisConnectionFactory());
template.setKeySerializer(new StringRedisSerializer()); // template.setKeySerializer(new StringRedisSerializer());
template.setValueSerializer(new StringRedisSerializer()); // template.setValueSerializer(new StringRedisSerializer());
return template; // return template;
} // }
//
// 使用7号数据库 // // 使用7号数据库
@Bean(name = "redis7ConnectionFactory") // @Bean(name = "redis7ConnectionFactory")
public RedisConnectionFactory redis7ConnectionFactory() { // public RedisConnectionFactory redis7ConnectionFactory() {
LettuceConnectionFactory factory = new LettuceConnectionFactory(redisHost, redisPort); // LettuceConnectionFactory factory = new LettuceConnectionFactory(redisHost, redisPort);
factory.setPassword(redisPassword); // factory.setPassword(redisPassword);
factory.setDatabase(7); // factory.setDatabase(7);
return factory; // return factory;
} // }
//
@Bean(name = "redis7Template") // @Bean(name = "redis7Template")
public RedisTemplate<String, Object> redis7Template() { // public RedisTemplate<String, Object> redis7Template() {
RedisTemplate<String, Object> template = new RedisTemplate<>(); // RedisTemplate<String, Object> template = new RedisTemplate<>();
template.setConnectionFactory(redis7ConnectionFactory()); // template.setConnectionFactory(redis7ConnectionFactory());
template.setKeySerializer(new StringRedisSerializer()); // template.setKeySerializer(new StringRedisSerializer());
template.setValueSerializer(new StringRedisSerializer()); // template.setValueSerializer(new StringRedisSerializer());
return template; // return template;
} // }
//
} //}
\ No newline at end of file \ No newline at end of file
...@@ -3,12 +3,12 @@ package net.wanji.opt.controllerv2; ...@@ -3,12 +3,12 @@ package net.wanji.opt.controllerv2;
import io.swagger.annotations.*; import io.swagger.annotations.*;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import net.wanji.common.framework.rest.JsonViewObject; import net.wanji.common.framework.rest.JsonViewObject;
import net.wanji.opt.po.base.CrossLaneDataHistPoExtend;
import net.wanji.opt.servicev2.CrossService; import net.wanji.opt.servicev2.CrossService;
import net.wanji.opt.synthesis.pojo.CrossRealTimeAlarmEntity; import net.wanji.opt.synthesis.pojo.CrossRealTimeAlarmEntity;
import net.wanji.opt.synthesis.pojo.CrossStatusDisOptTimeEntity; import net.wanji.opt.synthesis.pojo.CrossStatusDisOptTimeEntity;
import net.wanji.opt.vo2.CrossRealTimeAlarmVO; import net.wanji.opt.vo2.CrossRealTimeAlarmVO;
import net.wanji.opt.vo2.CrossStatusDistributionVO; import net.wanji.opt.vo2.CrossStatusDistributionVO;
import org.springframework.http.HttpMethod;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RequestParam;
...@@ -37,22 +37,46 @@ public class CrossController { ...@@ -37,22 +37,46 @@ public class CrossController {
@ApiImplicitParam(name = "groupType", value = "时间粒度 0--5分钟 1--15分钟 2--30分钟 3--60分钟", required = true, dataType = "String", paramType = "query"), @ApiImplicitParam(name = "groupType", value = "时间粒度 0--5分钟 1--15分钟 2--30分钟 3--60分钟", required = true, dataType = "String", paramType = "query"),
@ApiImplicitParam(name = "date", value = "日期 格式:yyyy-MM-dd", required = true, dataType = "String", paramType = "query"), @ApiImplicitParam(name = "date", value = "日期 格式:yyyy-MM-dd", required = true, dataType = "String", paramType = "query"),
@ApiImplicitParam(name = "objectType", value = "范围 1:方向级指标 2:转向级指标 3:车道级指标 4:路口级指标", required = true, dataType = "String", paramType = "query"), @ApiImplicitParam(name = "objectType", value = "范围 1:方向级指标 2:转向级指标 3:车道级指标 4:路口级指标", required = true, dataType = "String", paramType = "query"),
@ApiImplicitParam(name = "directionName", value = "方向", required = false, dataType = "String",defaultValue = "北进口"), @ApiImplicitParam(name = "directionName", value = "方向 支持 北进口;东进口;南进口;西进口", dataType = "String", defaultValue = "北进口;东进口;南进口;西进口"),
}) })
@ApiResponses({ @ApiResponses({
@ApiResponse(code = 200, message = "OK", response = CrossStatusDistributionVO.class), @ApiResponse(code = 200, message = "OK", response = CrossStatusDistributionVO.class),
}) })
public JsonViewObject getCrossStatusDistribution(String crossID, String date, String groupType, Integer objectType, @RequestParam(defaultValue = "") String directionName) { public JsonViewObject getCrossStatusDistribution(String crossID, String date, String groupType, Integer objectType, String directionName) {
JsonViewObject jsonViewObject = JsonViewObject.newInstance(); JsonViewObject jsonViewObject = JsonViewObject.newInstance();
Map<String, List<?>> result; Map<String, Object> map = new HashMap<>();
String[] dirs = directionName.split(";");
for (String dir : dirs) {
String dirName = "";
switch (dir) {
case "北进口":
dirName = "northList";
break;
case "南进口":
dirName = "southList";
break;
case "西进口":
dirName = "westList";
break;
case "东进口":
dirName = "eastList";
break;
}
try { try {
result = crossService.getCrossStatusDistribution(crossID, date, groupType, objectType, directionName); List<CrossStatusDistributionVO> info = crossService.getCrossStatusDistribution(crossID, date, groupType, objectType, dir);
map.put(dirName, info);
} catch (Exception e) { } catch (Exception e) {
log.error("监测详情-路口事件详情-路口状态分布: ", e); log.error("监测详情-路口事件详情-路口状态分布: ", e);
return jsonViewObject.fail("路口状态分布查询失败"); return jsonViewObject.fail("路口状态分布查询失败");
} }
return jsonViewObject.success(result); }
map.put("optTimeList", crossService.getOptTimeList(crossID));
return jsonViewObject.success(map);
} }
@ApiOperation(value = "路口实时告警", notes = "路口实时告警", response = JsonViewObject.class, httpMethod="GET") @ApiOperation(value = "路口实时告警", notes = "路口实时告警", response = JsonViewObject.class, httpMethod="GET")
......
...@@ -160,7 +160,8 @@ public class TrendControllerV2 { ...@@ -160,7 +160,8 @@ public class TrendControllerV2 {
log.error("态势监测-事件告警-实时列表:", e); log.error("态势监测-事件告警-实时列表:", e);
JsonViewObject.newInstance().success(list); JsonViewObject.newInstance().success(list);
} }
return JsonViewObject.newInstance().success(list); List<OptMonitoringVO> collect = list.stream().filter(vo -> !StringUtils.equalsIgnoreCase("700", vo.getType())).collect(Collectors.toList());
return JsonViewObject.newInstance().success(collect);
} }
@ApiOperation(value = "态势监测-区域体检-雷达图绿波类型过滤", notes = "态势监测-区域体检-雷达图绿波类型过滤", @ApiOperation(value = "态势监测-区域体检-雷达图绿波类型过滤", notes = "态势监测-区域体检-雷达图绿波类型过滤",
...@@ -231,9 +232,27 @@ public class TrendControllerV2 { ...@@ -231,9 +232,27 @@ public class TrendControllerV2 {
try { try {
result = trendServiceV2.optStrategyResultInfo(id); result = trendServiceV2.optStrategyResultInfo(id);
} catch (Exception e) { } catch (Exception e) {
log.error("态势监测-事件告警-历史列表:", e); log.error("态势监测-策略推荐-优化策略:", e);
JsonViewObject.newInstance().success(result); JsonViewObject.newInstance().success(result);
} }
return JsonViewObject.newInstance().success(result); return JsonViewObject.newInstance().success(result);
} }
@ApiOperation(value = "态势监测-策略推荐-绿波优化相位差", notes = "态势监测-策略推荐-绿波优化相位差",
response = JsonViewObject.class,
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@GetMapping(value = "/optStrategyCrossOffsetList")
@ApiResponses({
@ApiResponse(code = 200, message = "OK", response = OptMonitoringVO.class),
})
public JsonViewObject optStrategyCrossOffsetList(Integer id) throws Exception {
GreenOptCrossOffsetVO greenOptCrossOffsetVO = new GreenOptCrossOffsetVO();
try {
greenOptCrossOffsetVO = trendServiceV2.optStrategyCrossOffsetList(id);
} catch (Exception e) {
log.error("态势监测-策略推荐-绿波优化相位差:", e);
JsonViewObject.newInstance().success(greenOptCrossOffsetVO);
}
return JsonViewObject.newInstance().success(greenOptCrossOffsetVO);
}
} }
\ No newline at end of file
...@@ -44,8 +44,6 @@ public class TrunkLineController { ...@@ -44,8 +44,6 @@ public class TrunkLineController {
responseHeaders = {@ResponseHeader(name = "Content-Type", description = "application/json")}) responseHeaders = {@ResponseHeader(name = "Content-Type", description = "application/json")})
}) })
public JsonViewObject statusDisInfoList(String greenID, String date, String timeGranule) { public JsonViewObject statusDisInfoList(String greenID, String date, String timeGranule) {
try { try {
JsonViewObject object = JsonViewObject.newInstance(); JsonViewObject object = JsonViewObject.newInstance();
JSONObject list = trunkLineStatusDisService.trunkLineStatusDisInfoList(greenID, date, timeGranule); JSONObject list = trunkLineStatusDisService.trunkLineStatusDisInfoList(greenID, date, timeGranule);
...@@ -97,4 +95,24 @@ public class TrunkLineController { ...@@ -97,4 +95,24 @@ public class TrunkLineController {
return JsonViewObject.newInstance().fail("获取干线实时告警失败"); return JsonViewObject.newInstance().fail("获取干线实时告警失败");
} }
} }
@ApiOperation(value = "干线路口问题", notes = "干线路口问题", response = JsonViewObject.class, httpMethod="GET")
@ApiImplicitParams({
@ApiImplicitParam(name = "greenID", value = "绿波ID", required = true, dataType = "Integer", paramType = "query"),
@ApiImplicitParam(name = "time", value = "时间 格式:yyyy-MM-dd HH:ii:ss", dataType = "String", paramType = "query"),
})
@GetMapping(value = "/getTrunkLineCrossProblem")
@ApiResponses({
@ApiResponse(code = 200, message = "OK", response = TrunkLineCrossProblemVO.class),
})
public JsonViewObject getTrunkLineCrossProblem(Integer greenID, @RequestParam(defaultValue = "") String time) {
try {
JsonViewObject object = JsonViewObject.newInstance();
List<TrunkLineCrossProblemVO> list = trunkLineService.getTrunkLineCrossProblem(greenID,time);
return object.success(list);
} catch (Exception e) {
log.error("获取干线路口问题失败: ", e);
return JsonViewObject.newInstance().fail("获取干线路口问题失败");
}
}
} }
...@@ -65,8 +65,9 @@ public class AnalysisProblemAreaDayController { ...@@ -65,8 +65,9 @@ public class AnalysisProblemAreaDayController {
@ApiOperation(value = "区域-路口问题数量分析", response = JsonViewObject.class, @ApiOperation(value = "区域-路口问题数量分析", response = JsonViewObject.class,
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON) produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@ApiImplicitParams({ @ApiImplicitParams({
@ApiImplicitParam(name = "eventType", value = "事件代码 701:路口空放 702:路口失衡,703:路口溢出 705:干线缓行 706:干线拥堵 707:路口拥堵", required = true, dataType = "String", defaultValue = ""), @ApiImplicitParam(name = "eventType", value = "事件代码 701:路口空放 702:路口失衡,703:路口溢出 707:路口拥堵", required = true, dataType = "String", defaultValue = ""),
@ApiImplicitParam(name = "areaId", value = "区域ID", required = true, dataType = "String", defaultValue = "1"), @ApiImplicitParam(name = "areaId", value = "区域ID", required = true, dataType = "String", defaultValue = "1"),
@ApiImplicitParam(name = "timeType", value = "事件类型 1:近一个月 2:近一周", required = true, dataType = "int", defaultValue = "1"),
}) })
@GetMapping(value = "/cross-problem-number") @GetMapping(value = "/cross-problem-number")
...@@ -81,7 +82,7 @@ public class AnalysisProblemAreaDayController { ...@@ -81,7 +82,7 @@ public class AnalysisProblemAreaDayController {
@ApiOperation(value = "区域-干线问题数量分析", response = JsonViewObject.class, @ApiOperation(value = "区域-干线问题数量分析", response = JsonViewObject.class,
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON) produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@ApiImplicitParams({ @ApiImplicitParams({
@ApiImplicitParam(name = "eventType", value = "事件代码 701:路口空放 702:路口失衡,703:路口溢出 705:干线缓行 706:干线拥堵 707:路口拥堵 ", required = true, dataType = "String", defaultValue = ""), @ApiImplicitParam(name = "eventType", value = "事件代码 705:干线缓行 706:干线拥堵 ", required = true, dataType = "String", defaultValue = ""),
@ApiImplicitParam(name = "areaId", value = "区域ID", required = true, dataType = "String", defaultValue = "1"), @ApiImplicitParam(name = "areaId", value = "区域ID", required = true, dataType = "String", defaultValue = "1"),
@ApiImplicitParam(name = "timeType", value = "事件类型 1:近一个月 2:近一周", required = true, dataType = "int", defaultValue = "1"), @ApiImplicitParam(name = "timeType", value = "事件类型 1:近一个月 2:近一周", required = true, dataType = "int", defaultValue = "1"),
}) })
......
...@@ -9,6 +9,7 @@ import io.swagger.annotations.ApiResponses; ...@@ -9,6 +9,7 @@ import io.swagger.annotations.ApiResponses;
import net.wanji.common.framework.rest.JsonViewObject; import net.wanji.common.framework.rest.JsonViewObject;
import net.wanji.opt.controllerv2.judgeanalysis.design.response.areaproblem.AreaProblemOverview; import net.wanji.opt.controllerv2.judgeanalysis.design.response.areaproblem.AreaProblemOverview;
import net.wanji.opt.controllerv2.judgeanalysis.design.response.areaproblem.AreaProblemTrendAnalysisResult; import net.wanji.opt.controllerv2.judgeanalysis.design.response.areaproblem.AreaProblemTrendAnalysisResult;
import net.wanji.opt.controllerv2.judgeanalysis.design.response.crossproblem.CrossDirProblemTrendAnalysisResult;
import net.wanji.opt.controllerv2.judgeanalysis.design.response.crossproblem.CrossProblemDirTrendAnalysisResult; import net.wanji.opt.controllerv2.judgeanalysis.design.response.crossproblem.CrossProblemDirTrendAnalysisResult;
import net.wanji.opt.controllerv2.judgeanalysis.design.response.crossproblem.CrossProblemTimeDirReasonResult; import net.wanji.opt.controllerv2.judgeanalysis.design.response.crossproblem.CrossProblemTimeDirReasonResult;
import net.wanji.opt.servicev2.judgeanalysis.AnalysisProblemCrossDayService; import net.wanji.opt.servicev2.judgeanalysis.AnalysisProblemCrossDayService;
...@@ -93,7 +94,7 @@ public class AnalysisProblemCrossDayController { ...@@ -93,7 +94,7 @@ public class AnalysisProblemCrossDayController {
}) })
@GetMapping(value = "/dir-trend") @GetMapping(value = "/dir-trend")
@ApiResponses({ @ApiResponses({
@ApiResponse(code = 200, message = "OK", response = AreaProblemTrendAnalysisResult.class), @ApiResponse(code = 200, message = "OK", response = CrossDirProblemTrendAnalysisResult.class),
}) })
public JsonViewObject dirTrend(String crossId,String timeType,String eventType) { public JsonViewObject dirTrend(String crossId,String timeType,String eventType) {
return JsonViewObject.newInstance().success(null); return JsonViewObject.newInstance().success(null);
......
package net.wanji.opt.controllerv2.judgeanalysis; package net.wanji.opt.controllerv2.judgeanalysis;
import net.wanji.opt.entity.judgeanalysis.AnalysisProblemGreenDay;
import net.wanji.opt.servicev2.judgeanalysis.AnalysisProblemGreenDayService;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiResponse;
import io.swagger.annotations.ApiResponses;
import net.wanji.common.framework.rest.JsonViewObject;
import net.wanji.opt.controllerv2.judgeanalysis.design.response.areaproblem.AreaProblemOverview;
import net.wanji.opt.controllerv2.judgeanalysis.design.response.areaproblem.AreaProblemTrendAnalysisResult;
import net.wanji.opt.controllerv2.judgeanalysis.design.response.crossproblem.CrossProblemDirTrendAnalysisResult;
import net.wanji.opt.controllerv2.judgeanalysis.design.response.greenproblem.GreenCrossProblemTrendAnalysisResult;
import net.wanji.opt.controllerv2.judgeanalysis.design.response.greenproblem.GreenProblemTimeDirReasonResult;
import net.wanji.opt.servicev2.judgeanalysis.AnalysisProblemGreenDayService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.GetMapping;
import net.wanji.opt.api.ResultGenerator; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.ws.rs.core.MediaType;
import javax.validation.Valid;
import java.util.List;
/** /**
* <p> * <p>
...@@ -35,44 +39,65 @@ public class AnalysisProblemGreenDayController { ...@@ -35,44 +39,65 @@ public class AnalysisProblemGreenDayController {
@ApiOperation(value = "绿波问题分析详情", response = AnalysisProblemGreenDay.class) @ApiOperation(value = "绿波干线-问题数量总览", response = JsonViewObject.class,
@GetMapping(value = "/info/{id}") produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
public Object info(@PathVariable Long id) { @ApiImplicitParams({
@ApiImplicitParam(name = "greenId", value = "绿波干线", required = true, dataType = "String", defaultValue = ""),
Object data = analysisProblemGreenDayService.info(id); @ApiImplicitParam(name = "timeType", value = "事件类型 1:近一个月 2:近一周", required = true, dataType = "int", defaultValue = "1"),
return ResultGenerator.genSuccessResult(data); })
@GetMapping(value = "/overview")
@ApiResponses({
@ApiResponse(code = 200, message = "OK", response = AreaProblemOverview.class),
})
public JsonViewObject problemOverview(String greenId,Integer timeType) {
return JsonViewObject.newInstance().success(null);
} }
@ApiOperation(value = "绿波问题分析新增")
@PostMapping(value = "/add")
public Object add(@Valid @RequestBody AnalysisProblemGreenDay param) {
analysisProblemGreenDayService.add(param); @ApiOperation(value = "绿波干线-报警走势", response = JsonViewObject.class,
return ResultGenerator.genSuccessResult(); produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@ApiImplicitParams({
@ApiImplicitParam(name = "greenId", value = "绿波干线", required = true, dataType = "String", defaultValue = ""),
@ApiImplicitParam(name = "timeType", value = "事件类型 1:近一个月 2:近一周", required = true, dataType = "int", defaultValue = "1"),
})
@GetMapping(value = "/trend")
@ApiResponses({
@ApiResponse(code = 200, message = "OK", response = AreaProblemTrendAnalysisResult.class),
})
public JsonViewObject trend(String greenId,Integer timeType) {
return JsonViewObject.newInstance().success(null);
} }
@ApiOperation(value = "绿波问题分析修改")
@PostMapping(value = "/modify")
public Object modify(@Valid @RequestBody AnalysisProblemGreenDay param) {
analysisProblemGreenDayService.modify(param);
return ResultGenerator.genSuccessResult();
}
@ApiOperation(value = "绿波问题分析删除(单个条目)")
@GetMapping(value = "/remove/{id}")
public Object remove(@PathVariable Long id) {
analysisProblemGreenDayService.remove(id); @ApiOperation(value = "绿波干线-问题发生时段、方向、原因分析", response = JsonViewObject.class,
return ResultGenerator.genSuccessResult(); produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@ApiImplicitParams({
@ApiImplicitParam(name = "greenId", value = "绿波干线", required = true, dataType = "String", defaultValue = ""),
@ApiImplicitParam(name = "timeType", value = "事件类型 1:近一个月 2:近一周", required = true, dataType = "int", defaultValue = "1"),
})
@GetMapping(value = "/detail")
@ApiResponses({
@ApiResponse(code = 200, message = "OK", response = GreenProblemTimeDirReasonResult.class),
})
public JsonViewObject detail(String greenId,String timeType) {
return JsonViewObject.newInstance().success(null);
} }
@ApiOperation(value = "绿波问题分析删除(多个条目)")
@PostMapping(value = "/removes")
public Object removes(@Valid @RequestBody List<Long> ids) {
analysisProblemGreenDayService.removes(ids); @ApiOperation(value = "绿波干线-干线路口问题情况分布",
return ResultGenerator.genSuccessResult(); produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@ApiImplicitParams({
@ApiImplicitParam(name = "greenId", value = "绿波干线", required = true, dataType = "String", defaultValue = ""),
@ApiImplicitParam(name = "timeType", value = "事件类型 1:近一个月 2:近一周", required = true, dataType = "int", defaultValue = "1"),
@ApiImplicitParam(name = "eventType", value = "事件代码 701:空放 702:路口失衡,703:路口溢出 707:路口拥堵", required = true, dataType = "String", defaultValue = "")
})
@GetMapping(value = "/cross-trend")
@ApiResponses({
@ApiResponse(code = 200, message = "OK", response = GreenCrossProblemTrendAnalysisResult.class),
})
public JsonViewObject dirTrend(String greenId,String timeType,String eventType) {
return JsonViewObject.newInstance().success(null);
} }
} }
\ No newline at end of file
package net.wanji.opt.controllerv2.judgeanalysis;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import net.wanji.common.framework.exception.DubboProviderException;
import net.wanji.common.framework.i18n.I18nResourceBundle;
import net.wanji.common.framework.rest.AbstractRestServer;
import net.wanji.common.framework.rest.JsonViewObject;
import net.wanji.common.framework.rest.Page;
import net.wanji.common.framework.rest.impl.AbstractRestServerImpl;
import net.wanji.databus.po.BaseAreaInfoPO;
import net.wanji.opt.entity.BaseAreaInfo;
import net.wanji.opt.servicev2.judgeanalysis.BaseAreaInfoService;
import net.wanji.opt.vo.GreenWaveRunStateVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.ws.rs.core.MediaType;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* <p>
* 区域基础信息 接口API
* </p>
* @version 1.0
* @author wangtao
* @Date 2025-03-18
*/
@RestController
@Slf4j
@RequestMapping("/base-area-info")
@Api(value="BaseAreaInfoController", description="区域基础信息接口", tags = "区域基础信息")
public class BaseAreaInfoController {
@Autowired
private BaseAreaInfoService baseAreaInfoService;
@ApiOperation(httpMethod="GET",value="区域基础信息-根据区划类型查询对应集合数据", notes="")
@GetMapping(value = "/byCondition")
public JsonViewObject getListByType(@RequestParam(value = "type", required = false, defaultValue = "2") Integer type) {
JsonViewObject jsonViewObject = JsonViewObject.newInstance();
try {
List<BaseAreaInfoPO> list = baseAreaInfoService.selectByType(type);
jsonViewObject.success(list);
} catch (Exception e) {
jsonViewObject.fail(I18nResourceBundle.getConstants("GET_FAILED_MSG"));
log.error("{} getAll error", this.getClass().getSimpleName(), e);
}
return jsonViewObject;
}
}
...@@ -43,7 +43,7 @@ class CrossProblemAnalysisResultResponse { ...@@ -43,7 +43,7 @@ class CrossProblemAnalysisResultResponse {
@ApiModelProperty(value = "事件类型名称",example = "路口拥堵") @ApiModelProperty(value = "事件类型名称",example = "路口拥堵")
private String eventLabel ; private String eventLabel ;
@ApiModelProperty(value = "事件问题梳理",example = "2",dataType = "Integer") @ApiModelProperty(value = "事件问题数量",example = "2",dataType = "Integer")
private Integer number ; private Integer number ;
} }
......
...@@ -35,9 +35,9 @@ class GreenProblemAnalysisResultResponse { ...@@ -35,9 +35,9 @@ class GreenProblemAnalysisResultResponse {
private Integer greenId ; private Integer greenId ;
@ApiModelProperty(value = "绿波干线名称",example = "经十路(舜耕路-山大路)") @ApiModelProperty(value = "绿波干线名称",example = "经十路(舜耕路-山大路)")
private String crossName ; private String greenName ;
@ApiModelProperty(value = "事件代码 701:空放 702:路口失衡,703:路口溢出 707:路口拥堵",example = "'707'" , dataType = "String") @ApiModelProperty(value = "事件代码 705:干线缓行 706:干线拥堵",example = "'707'" , dataType = "String")
private String eventType ; private String eventType ;
@ApiModelProperty(value = "事件类型名称",example = "路口拥堵") @ApiModelProperty(value = "事件类型名称",example = "路口拥堵")
......
...@@ -31,7 +31,7 @@ public class AreaProblemOverview extends ParentResult { ...@@ -31,7 +31,7 @@ public class AreaProblemOverview extends ParentResult {
@Data @Data
class EventAnalysisResultResponse { class EventAnalysisResultResponse {
@ApiModelProperty(value = "事件代码 701:空放 702:路口失衡,703:路口溢出 707:路口拥堵",example = "'707'",dataType = "string") @ApiModelProperty(value = "事件代码 701:空放 702:路口失衡,703:路口溢出 705:干线缓行 706:干线拥堵 707:路口拥堵",example = "'707'",dataType = "string")
private String eventType ; private String eventType ;
@ApiModelProperty(value = "事件类型名称",example = "路口拥堵") @ApiModelProperty(value = "事件类型名称",example = "路口拥堵")
......
...@@ -43,17 +43,5 @@ class ProblemTrendAnalysisResultResponse { ...@@ -43,17 +43,5 @@ class ProblemTrendAnalysisResultResponse {
} }
@Data
class ProblemTrendAnalysisResultTimeFlow {
@ApiModelProperty(value = "事件代码 701:空放 702:路口失衡,703:路口溢出 707:路口拥堵",example = "'707'",dataType = "string")
private String eventType ;
@ApiModelProperty(value = "事件类型名称",example = "路口拥堵")
private String eventLabel ;
@ApiModelProperty(value = "时段事件数量,时段对应到timeList",example = "[300,400]",dataType = "int[]")
private List<Integer> list ;
}
package net.wanji.opt.controllerv2.judgeanalysis.design.response.areaproblem;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
* @author fengyi
* @date 2025/3/17
* @description
*/
@Data
public class ProblemTrendAnalysisResultTimeFlow {
@ApiModelProperty(value = "事件代码 701:空放 702:路口失衡,703:路口溢出 705:干线缓行 706:干线拥堵 707:路口拥堵",example = "'707'",dataType = "string")
private String eventType ;
@ApiModelProperty(value = "事件类型名称",example = "路口拥堵")
private String eventLabel ;
@ApiModelProperty(value = "时段事件数量,时段对应到timeList",example = "[300,400]",dataType = "int[]")
private List<Integer> list ;
}
package net.wanji.opt.controllerv2.judgeanalysis.design.response.crossproblem;
import com.alibaba.fastjson.JSON;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import net.wanji.opt.controllerv2.judgeanalysis.design.response.ParentResult;
import net.wanji.opt.controllerv2.judgeanalysis.design.response.areaproblem.AreaProblemTrendAnalysisResult;
import net.wanji.opt.controllerv2.judgeanalysis.design.response.areaproblem.ProblemTrendAnalysisResultTimeFlow;
import java.util.ArrayList;
import java.util.List;
@Data
public class CrossDirProblemTrendAnalysisResult extends ParentResult {
private CrossDirProblemTrendAnalysisResultResponse content;
public CrossDirProblemTrendAnalysisResultResponse getContent() {
return content;
}
public CrossDirProblemTrendAnalysisResult setContent(CrossDirProblemTrendAnalysisResultResponse content) {
this.content = content;
return this;
}
@Override
public String toString() {
return JSON.toJSONString(this);
}
}
@Data
class CrossDirProblemTrendAnalysisResultResponse {
@ApiModelProperty(value = "时段列表",example = "[\"20250311\",\"20250312\"]",dataType = "String[]")
private List<String> timeList = new ArrayList<>();
// @ApiModelProperty(value = "各路口时段流量列表",
// example = "[{\"name\":\"路口1\",\"list\":[150,300]}," +
// "{\"name\":\"路口2\",\"list\":[150,300]}]")
private List<CrossDirProblemTrendAnalysisResultTimeFlow> dataList=new ArrayList<>();
}
@Data
class CrossDirProblemTrendAnalysisResultTimeFlow extends ProblemTrendAnalysisResultTimeFlow {
@ApiModelProperty(value = "方向编码",example = "")
private Integer dir ;
@ApiModelProperty(value = "方向名称",example = "")
private String dirName ;
}
package net.wanji.opt.controllerv2.judgeanalysis.design.response.greenproblem;
import com.alibaba.fastjson.JSON;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import net.wanji.opt.controllerv2.judgeanalysis.design.response.ParentResult;
import net.wanji.opt.controllerv2.judgeanalysis.design.response.areaproblem.ProblemTrendAnalysisResultTimeFlow;
import net.wanji.opt.controllerv2.judgeanalysis.design.response.crossproblem.CrossDirProblemTrendAnalysisResult;
import java.util.ArrayList;
import java.util.List;
@Data
public class GreenCrossProblemTrendAnalysisResult extends ParentResult {
private GreenProblemTrendAnalysisResultResponse content;
public GreenProblemTrendAnalysisResultResponse getContent() {
return content;
}
public GreenCrossProblemTrendAnalysisResult setContent(GreenProblemTrendAnalysisResultResponse content) {
this.content = content;
return this;
}
@Override
public String toString() {
return JSON.toJSONString(this);
}
}
@Data
class GreenProblemTrendAnalysisResultResponse {
@ApiModelProperty(value = "时段列表",example = "[\"20250311\",\"20250312\"]",dataType = "String[]")
private List<String> timeList = new ArrayList<>();
// @ApiModelProperty(value = "各路口时段流量列表",
// example = "[{\"name\":\"路口1\",\"list\":[150,300]}," +
// "{\"name\":\"路口2\",\"list\":[150,300]}]")
private List<GreenProblemTrendAnalysisResultTimeFlow> dataList=new ArrayList<>();
}
@Data
class GreenProblemTrendAnalysisResultTimeFlow extends ProblemTrendAnalysisResultTimeFlow {
@ApiModelProperty(value = "路口ID",example = "",dataType = "string")
private String crossId ;
@ApiModelProperty(value = "路口名称",example = "")
private String crossName ;
}
package net.wanji.opt.controllerv2.judgeanalysis.design.response.greenproblem;
import com.alibaba.fastjson.JSON;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import net.wanji.opt.controllerv2.judgeanalysis.design.response.ParentResult;
import java.util.List;
@Data
public class GreenProblemTimeDirReasonResult extends ParentResult {
private GreenProblemTimeDirReasonBody content;
public GreenProblemTimeDirReasonBody getContent() {
return content;
}
public GreenProblemTimeDirReasonResult setContent(GreenProblemTimeDirReasonBody content) {
this.content = content;
return this;
}
@Override
public String toString() {
return JSON.toJSONString(this);
}
}
@Data
class GreenProblemTimeDirReasonBody {
@ApiModelProperty(value = "事件类型码",example = "'706'" )
private String eventType ;
@ApiModelProperty(value = "事件类型名称",example = "干线拥堵")
private String eventLabel ;
@ApiModelProperty(value = "问题主要发生时段",example = "[\"07:00-08:00\",\"18:00-19:00\"]")
private List<String> timeList ;
@ApiModelProperty(value = "主要【拥堵/缓行】路口" ,example = "[\"路口1\",\"路口2\"]")
private List<String> mainCongestCrossName ;
@ApiModelProperty(value = "主要【拥堵/缓行】路段",example = "[\"路段1\",\"路段2\"]")
private List<String> mainCongestRoadName ;
// TODO 需要有个计算任务,根据小时流量或其他指标计算事件发生的原因
@ApiModelProperty(value = "问题发生原因",example = "[\"区位原因\",\"交通流原因\"]")
private List<String> reasonList ;
}
package net.wanji.opt.dao.mapper; package net.wanji.opt.dao.mapper;
import io.lettuce.core.dynamic.annotation.Param; import io.lettuce.core.dynamic.annotation.Param;
import net.wanji.opt.synthesis.pojo.TrunkLineCrossProblemEntity;
import net.wanji.opt.synthesis.pojo.TrunkLineProblemDescribeEntity; import net.wanji.opt.synthesis.pojo.TrunkLineProblemDescribeEntity;
import net.wanji.opt.vo2.CrossRealTimeAlarmVO; import net.wanji.opt.vo2.CrossRealTimeAlarmVO;
...@@ -25,4 +26,16 @@ public interface TrunkLineMapper{ ...@@ -25,4 +26,16 @@ public interface TrunkLineMapper{
* @return * @return
*/ */
List<CrossRealTimeAlarmVO> getTrunkLineRealTimeAlarm(@Param("greenID") Integer greenID,@Param("time") String time); List<CrossRealTimeAlarmVO> getTrunkLineRealTimeAlarm(@Param("greenID") Integer greenID,@Param("time") String time);
/**
* 获取干线路口事件描述
* @return
*/
List<TrunkLineCrossProblemEntity> getTrunkLineCrossProblem(@Param("greenID") Integer greenID, @Param("time") String time);
/**
* 获取进出口方向
*/
TrunkLineCrossProblemEntity getIODir(@Param("greenID") Integer greenID);
} }
package net.wanji.opt.entity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import net.wanji.common.framework.domain.TrackableEntity;
import java.util.Date;
import java.math.BigDecimal;
/**
* <p>
* 区域基础信息
* </p>
*
* @Author wangtao
* @Date 2025-03-18
*/
@Data
@ApiModel(value="BaseAreaInfo对象", description="区域基础信息")
public class BaseAreaInfo extends TrackableEntity {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "行政区划代码")
private Long code;
@ApiModelProperty(value = "行政区划名称")
private String name;
@ApiModelProperty(value = "道路名称")
private String roadName;
@ApiModelProperty(value = "区划类型:1行政区划;2交警辖区;3商圈;4交通小区;5热点区域;6道路")
private Integer type;
@ApiModelProperty(value = "父节点")
private Integer parentCode;
@ApiModelProperty(value = "区域中心点")
private String location;
@ApiModelProperty(value = "区域边界")
private String polylines;
@ApiModelProperty(value = "备注")
private String remark;
@ApiModelProperty(value = "创建时间")
private Date gmtCreate;
@ApiModelProperty(value = "修改时间")
private Date gmtModified;
}
package net.wanji.opt.servicev2; package net.wanji.opt.servicev2;
import net.wanji.opt.synthesis.pojo.CrossRealTimeAlarmEntity; import net.wanji.opt.synthesis.pojo.CrossRealTimeAlarmEntity;
import net.wanji.opt.synthesis.pojo.CrossStatusDisOptTimeEntity;
import net.wanji.opt.vo2.CrossStatusDistributionVO; import net.wanji.opt.vo2.CrossStatusDistributionVO;
import java.util.List; import java.util.List;
...@@ -23,14 +24,20 @@ public interface CrossService { ...@@ -23,14 +24,20 @@ public interface CrossService {
* @param directionName 方向 * @param directionName 方向
* @return 包含状态分布信息列表与优化时间列表 * @return 包含状态分布信息列表与优化时间列表
*/ */
Map<String, List<?>> getCrossStatusDistribution(String crossID, String date, String groupType, Integer objectType, String directionName); List<CrossStatusDistributionVO> getCrossStatusDistribution(String crossID, String date, String groupType, Integer objectType, String directionName);
/** /**
* 获取路口实时告警 * 获取路口实时告警
* @param crossID * @param crossID 路口ID
* @param time 可选参数 * @param time 可选参数
* @return * @return
*/ */
List<CrossRealTimeAlarmEntity> getCrossRealTimeAlarm(String crossID, String time); List<CrossRealTimeAlarmEntity> getCrossRealTimeAlarm(String crossID, String time);
/**
* 获取路口优化时间
* @param crossID 路口ID
* @return
*/
List<CrossStatusDisOptTimeEntity> getOptTimeList(String crossID);
} }
...@@ -31,4 +31,6 @@ public interface TrendServiceV2 { ...@@ -31,4 +31,6 @@ public interface TrendServiceV2 {
String optStrategyResultInfo(String id) throws Exception; String optStrategyResultInfo(String id) throws Exception;
GreenOptCrossOffsetVO optStrategyCrossOffsetList(Integer id) throws Exception;
} }
\ No newline at end of file
...@@ -2,7 +2,7 @@ package net.wanji.opt.servicev2; ...@@ -2,7 +2,7 @@ package net.wanji.opt.servicev2;
import net.wanji.opt.synthesis.pojo.TrunkLineProblemDescribeEntity; import net.wanji.opt.synthesis.pojo.TrunkLineProblemDescribeEntity;
import net.wanji.opt.vo2.CrossRealTimeAlarmVO; import net.wanji.opt.vo2.CrossRealTimeAlarmVO;
import net.wanji.opt.vo2.TrunkLineProblemDescribeVO; import net.wanji.opt.vo2.TrunkLineCrossProblemVO;
import java.util.List; import java.util.List;
...@@ -22,4 +22,9 @@ public interface TrunkLineService { ...@@ -22,4 +22,9 @@ public interface TrunkLineService {
* 获取干线实时告警 * 获取干线实时告警
*/ */
List<CrossRealTimeAlarmVO> getTrunkLineRealTimeAlarm(Integer greenID, String time); List<CrossRealTimeAlarmVO> getTrunkLineRealTimeAlarm(Integer greenID, String time);
/**
* 干线路口事件描述列表
*/
List<TrunkLineCrossProblemVO> getTrunkLineCrossProblem(Integer greenID, String time);
} }
package net.wanji.opt.servicev2.implv2; package net.wanji.opt.servicev2.implv2;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import net.wanji.common.enums.BaseEnum; import net.wanji.common.enums.BaseEnum;
import net.wanji.common.utils.tool.StringUtils; import net.wanji.common.utils.tool.StringUtils;
...@@ -11,18 +9,19 @@ import net.wanji.opt.po.base.CrossLaneDataHistPoExtend; ...@@ -11,18 +9,19 @@ import net.wanji.opt.po.base.CrossLaneDataHistPoExtend;
import net.wanji.opt.servicev2.CrossService; import net.wanji.opt.servicev2.CrossService;
import net.wanji.opt.synthesis.pojo.CrossRealTimeAlarmEntity; import net.wanji.opt.synthesis.pojo.CrossRealTimeAlarmEntity;
import net.wanji.opt.synthesis.pojo.CrossStatusDisOptTimeEntity; import net.wanji.opt.synthesis.pojo.CrossStatusDisOptTimeEntity;
import net.wanji.opt.synthesis.pojo.StrategyCrossResultEntity;
import net.wanji.opt.vo2.CrossStatusDistributionVO; import net.wanji.opt.vo2.CrossStatusDistributionVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.web.bind.annotation.RequestParam;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.*; import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/** /**
* <p> * <p>
* 监测详情-路口事件详情 * 监测详情-路口事件详情
*
* @author zhengyifan * @author zhengyifan
* @date 2025/3/15 * @date 2025/3/15
*/ */
...@@ -36,18 +35,19 @@ public class CrossServiceImpl implements CrossService { ...@@ -36,18 +35,19 @@ public class CrossServiceImpl implements CrossService {
/** /**
* 路口状态分布 * 路口状态分布
*
* @param crossID 路口ID * @param crossID 路口ID
* @param date 日期 * @param date 日期
* @param groupType 时间粒度 参数要求:0--5分钟 1--15分钟 2--30分钟 3--60分钟 * @param groupType 时间粒度 参数要求:0--5分钟 1--15分钟 2--30分钟 3--60分钟
* @param objectType 范围 参数要求:1--方向级 2--转向级 3--车道级 4--路口级 * @param objectType 范围 参数要求:1--方向级 2--转向级 3--车道级 4--路口级
* @param directionName 方向 * @param directionName 方向 东南西北
* @return * @return
*/ */
@Override @Override
public Map<String, List<?>> getCrossStatusDistribution(String crossID, String date, String groupType, Integer objectType, String directionName) { public List<CrossStatusDistributionVO> getCrossStatusDistribution(String crossID, String date, String groupType, Integer objectType, String directionName) {
Map<String, Object> params = new HashMap<>(); Map<String, Object> params = new HashMap<>();
params.put("crossId", crossID); params.put("crossId", crossID);
params.put("startDate", date+" 00:00:00"); params.put("startDate", date + " 00:00:00");
params.put("endDate", date + " 23:59:59"); params.put("endDate", date + " 23:59:59");
params.put("groupType", groupType); params.put("groupType", groupType);
params.put("objectType", objectType); params.put("objectType", objectType);
...@@ -56,30 +56,33 @@ public class CrossServiceImpl implements CrossService { ...@@ -56,30 +56,33 @@ public class CrossServiceImpl implements CrossService {
} }
List<CrossLaneDataHistPoExtend> firstList = greenwaveHistoryMapper.findCrossObjectIndex(params); List<CrossLaneDataHistPoExtend> firstList = greenwaveHistoryMapper.findCrossObjectIndex(params);
List<CrossStatusDisOptTimeEntity> optTimeList = crossMapper.getOptTimes(crossID); List<CrossStatusDistributionVO> results = new ArrayList<>();
List<CrossStatusDistributionVO> infoList = new ArrayList<>();
for (CrossLaneDataHistPoExtend c : firstList) { for (CrossLaneDataHistPoExtend c: firstList) {
CrossStatusDistributionVO info = new CrossStatusDistributionVO(); CrossStatusDistributionVO cd = new CrossStatusDistributionVO();
info.setSpeed(c.getSpeed());
info.setQueueLength(c.getAvgQueueLength());
info.setDelayTime(c.getDelayTime());
info.setStopTimes(c.getStopTimes());
info.setStartTime(c.getStartTime().toString().substring(11,16)); cd.setSpeed(c.getSpeed());
infoList.add(info); cd.setStartTime(c.getStartTime().toString().substring(11, 16));
} cd.setDelayTime(c.getDelayTime());
cd.setTurnType(c.getTurnType());
cd.setTurnTypeName(BaseEnum.TurnTypeEnum.getNameByCode(c.getTurnType()));
cd.setDirType(c.getDirType());
cd.setDirTypeName(BaseEnum.SignalDirectionEnum.getNameByCode(c.getDirType()));
cd.setStopTimes(c.getStopTimes());
cd.setQueueLength(c.getAvgQueueLength());
cd.setLaneNo(c.getLaneNo());
results.add(cd);
Map<String, List<?>> result = new HashMap<>(); }
result.put("infoList", infoList);
result.put("optTimeList", optTimeList);
return result; return results;
} }
/** /**
* 路口实时告警 * 路口实时告警
* @param crossID *
* @param crossID 路口ID
* @param time 可选参数 * @param time 可选参数
* @return * @return
*/ */
...@@ -87,4 +90,9 @@ public class CrossServiceImpl implements CrossService { ...@@ -87,4 +90,9 @@ public class CrossServiceImpl implements CrossService {
public List<CrossRealTimeAlarmEntity> getCrossRealTimeAlarm(String crossID, String time) { public List<CrossRealTimeAlarmEntity> getCrossRealTimeAlarm(String crossID, String time) {
return crossMapper.getCrossRealTimeAlarms(crossID, time); return crossMapper.getCrossRealTimeAlarms(crossID, time);
} }
@Override
public List<CrossStatusDisOptTimeEntity> getOptTimeList(String crossID) {
return crossMapper.getOptTimes(crossID);
}
} }
package net.wanji.opt.servicev2.implv2; package net.wanji.opt.servicev2.implv2;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.github.pagehelper.PageHelper; 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.utils.tool.DateUtil; import net.wanji.common.utils.tool.DateUtil;
import net.wanji.common.utils.tool.JacksonUtils;
import net.wanji.databus.dao.entity.BaseCrossSchemePO;
import net.wanji.databus.dao.entity.GreenwaveCrossPO;
import net.wanji.databus.dao.entity.GreenwaveHistPO; import net.wanji.databus.dao.entity.GreenwaveHistPO;
import net.wanji.databus.dao.mapper.BaseCrossSchemeMapper;
import net.wanji.databus.dao.mapper.CrossDataHistMapper; import net.wanji.databus.dao.mapper.CrossDataHistMapper;
import net.wanji.databus.dao.mapper.GreenwaveCrossMapper;
import net.wanji.databus.dao.mapper.GreenwaveHistMapper; import net.wanji.databus.dao.mapper.GreenwaveHistMapper;
import net.wanji.databus.po.CrossDataHistPO; import net.wanji.databus.po.CrossDataHistPO;
import net.wanji.databus.po.CrossSchemeRings;
import net.wanji.databus.vo.LightsStatusVO2;
import net.wanji.opt.common.RedisUtils;
import net.wanji.opt.common.enums.EventInfoTypeEnum; import net.wanji.opt.common.enums.EventInfoTypeEnum;
import net.wanji.opt.common.enums.GreenBeltDirEnum; import net.wanji.opt.common.enums.GreenBeltDirEnum;
import net.wanji.opt.dao.mapper.GreenWaveRealTimeMapperV2Mapper; import net.wanji.opt.dao.mapper.GreenWaveRealTimeMapperV2Mapper;
...@@ -22,7 +33,6 @@ import net.wanji.opt.vo2.dto.CrossLastOptResultDTO; ...@@ -22,7 +33,6 @@ import net.wanji.opt.vo2.dto.CrossLastOptResultDTO;
import net.wanji.opt.vo2.dto.GreenLastOptResultDTO; import net.wanji.opt.vo2.dto.GreenLastOptResultDTO;
import net.wanji.opt.vo2.dto.GreenOptDTO; import net.wanji.opt.vo2.dto.GreenOptDTO;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils; import org.springframework.util.StringUtils;
...@@ -52,12 +62,18 @@ public class TrendServiceV2Impl implements TrendServiceV2 { ...@@ -52,12 +62,18 @@ public class TrendServiceV2Impl implements TrendServiceV2 {
private GreenwaveHistMapper greenwaveHistMapper; private GreenwaveHistMapper greenwaveHistMapper;
@Resource @Resource
private StrategyGreenOptHistMapper greenOptHistMapper; private StrategyGreenOptHistMapper greenOptHistMapper;
@Resource
private GreenwaveCrossMapper greenwaveCrossMapper;
@Resource
private StrategyGreenOptHistMapper strategyGreenOptHistMapper;
@Resource
private RedisUtils redisUtil;
@Resource
private BaseCrossSchemeMapper baseCrossSchemeMapper;
private static List<OptMonitoringVO> greenListCache = new ArrayList<>(10); private static List<OptMonitoringVO> greenListCache = new ArrayList<>(10);
private static List<OptMonitoringVO> crossListCache = new ArrayList<>(80); private static List<OptMonitoringVO> crossListCache = new ArrayList<>(80);
@Autowired
private StrategyGreenOptHistMapper strategyGreenOptHistMapper;
@Override @Override
public List<CrossGreenStatusTimeRateVO> crossGreenStatusTimeRate() { public List<CrossGreenStatusTimeRateVO> crossGreenStatusTimeRate() {
...@@ -380,4 +396,69 @@ public class TrendServiceV2Impl implements TrendServiceV2 { ...@@ -380,4 +396,69 @@ public class TrendServiceV2Impl implements TrendServiceV2 {
} }
return sb.toString(); return sb.toString();
} }
@Override
public GreenOptCrossOffsetVO optStrategyCrossOffsetList(Integer id) throws Exception {
GreenOptCrossOffsetVO greenOptCrossOffsetVO = new GreenOptCrossOffsetVO();
try {
List<GreenOptCrossOffsetVO.CrossOffsetDetail> oriOffsetDetails = new ArrayList<>();
List<GreenOptCrossOffsetVO.CrossOffsetDetail> curOffsetDetails = new ArrayList<>();
List<GreenwaveCrossPO> greenwaveCrossPOS = greenwaveCrossMapper.selectByGreenwaveId(id);
for (GreenwaveCrossPO greenwaveCrossPO : greenwaveCrossPOS) {
String crossId = greenwaveCrossPO.getCrossId();
GreenOptCrossOffsetVO.CrossOffsetDetail oriOffsetDetail = getOriOffsetDetail(crossId);
oriOffsetDetails.add(oriOffsetDetail);
GreenOptCrossOffsetVO.CrossOffsetDetail curOffsetDetail = getCurOffsetDetail(crossId, oriOffsetDetail);
curOffsetDetails.add(curOffsetDetail);
}
greenOptCrossOffsetVO.setOriCrossOffsets(oriOffsetDetails);
greenOptCrossOffsetVO.setCurCrossOffsets(curOffsetDetails);
} catch (Exception e) {
log.error("态势监测-策略推荐-绿波优化相位差查询失败:{}", e);
throw new RuntimeException(e);
}
return greenOptCrossOffsetVO;
}
private GreenOptCrossOffsetVO.CrossOffsetDetail getCurOffsetDetail(String crossId, GreenOptCrossOffsetVO.CrossOffsetDetail oriDetail) throws Exception {
ObjectMapper mapper = JacksonUtils.getInstance();
GreenOptCrossOffsetVO.CrossOffsetDetail curDetail = new GreenOptCrossOffsetVO.CrossOffsetDetail();
Object offsetStr = redisUtil.getHash("utc_scheme_offset", crossId);
if (Objects.isNull(offsetStr)) {
return oriDetail;
} else {
CrossSchemeRings crossSchemeRings = mapper.readValue(String.valueOf(offsetStr), CrossSchemeRings.class);
if (Objects.nonNull(crossSchemeRings)) {
Integer offset = StringUtils.isEmpty(crossSchemeRings.getOffset()) ? 0 : Integer.valueOf(crossSchemeRings.getOffset());
curDetail.setOffset(offset);
curDetail.setCrossId(crossId);
curDetail.setSchemeNo(Integer.valueOf(crossSchemeRings.getPattern()));
}
}
return curDetail;
}
private GreenOptCrossOffsetVO.CrossOffsetDetail getOriOffsetDetail(String crossId) throws Exception {
ObjectMapper mapper = JacksonUtils.getInstance();
GreenOptCrossOffsetVO.CrossOffsetDetail crossOffsetDetail = new GreenOptCrossOffsetVO.CrossOffsetDetail();
Object lightStr = redisUtil.getHash("utc_light_status", crossId);
if (!StringUtils.isEmpty(lightStr)) {
List<LightsStatusVO2> lightsStatusVO2s = mapper.readValue(String.valueOf(lightStr), new TypeReference<List<LightsStatusVO2>>() {});
String schemeId = lightsStatusVO2s.get(0).getSchemeId();
Integer schemeNo = Integer.valueOf(schemeId);
BaseCrossSchemePO baseCrossSchemePO = baseCrossSchemeMapper.selectByCrossIdAndSchemeNo(crossId, schemeNo);
crossOffsetDetail.setOffset(0);
if (Objects.nonNull(baseCrossSchemePO)) {
Integer offset = baseCrossSchemePO.getOffset();
crossOffsetDetail.setCrossId(crossId);
crossOffsetDetail.setSchemeNo(schemeNo);
crossOffsetDetail.setOffset(offset);
}
}
return crossOffsetDetail;
}
} }
\ No newline at end of file
...@@ -3,10 +3,10 @@ package net.wanji.opt.servicev2.implv2; ...@@ -3,10 +3,10 @@ package net.wanji.opt.servicev2.implv2;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import net.wanji.opt.dao.mapper.TrunkLineMapper; import net.wanji.opt.dao.mapper.TrunkLineMapper;
import net.wanji.opt.servicev2.TrunkLineService; import net.wanji.opt.servicev2.TrunkLineService;
import net.wanji.opt.synthesis.pojo.TrunkLineCrossProblemEntity;
import net.wanji.opt.synthesis.pojo.TrunkLineProblemDescribeEntity; import net.wanji.opt.synthesis.pojo.TrunkLineProblemDescribeEntity;
import net.wanji.opt.vo2.CrossRealTimeAlarmVO; import net.wanji.opt.vo2.CrossRealTimeAlarmVO;
import net.wanji.opt.vo2.TrunkLineProblemDescribeVO; import net.wanji.opt.vo2.TrunkLineCrossProblemVO;
import org.jetbrains.annotations.NotNull;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.annotation.Resource; import javax.annotation.Resource;
...@@ -20,8 +20,7 @@ public class TrunkLineImpl implements TrunkLineService { ...@@ -20,8 +20,7 @@ public class TrunkLineImpl implements TrunkLineService {
@Override @Override
public List<TrunkLineProblemDescribeEntity> getTrunkLineProblemDescribe(String greenID , String time) { public List<TrunkLineProblemDescribeEntity> getTrunkLineProblemDescribe(String greenID , String time) {
List<TrunkLineProblemDescribeEntity> list = trunkLineMapper.getTrunkLineProblemDescribe(greenID,time); return trunkLineMapper.getTrunkLineProblemDescribe(greenID,time);
return list;
} }
@Override @Override
...@@ -29,20 +28,108 @@ public class TrunkLineImpl implements TrunkLineService { ...@@ -29,20 +28,108 @@ public class TrunkLineImpl implements TrunkLineService {
return trunkLineMapper.getTrunkLineRealTimeAlarm(greenID, time); return trunkLineMapper.getTrunkLineRealTimeAlarm(greenID, time);
} }
@NotNull @Override
private static TrunkLineProblemDescribeVO getTrunkLineProblemDescribeVO(List<TrunkLineProblemDescribeEntity> list, int i) { public List<TrunkLineCrossProblemVO> getTrunkLineCrossProblem(Integer greenID, String time) {
TrunkLineProblemDescribeVO vo = new TrunkLineProblemDescribeVO(); List<TrunkLineCrossProblemEntity> list= trunkLineMapper.getTrunkLineCrossProblem(greenID, time);
TrunkLineProblemDescribeEntity e = list.get(i); TrunkLineCrossProblemEntity ioDir = trunkLineMapper.getIODir(greenID);
TrunkLineProblemDescribeEntity e2= list.get(i +1); List<TrunkLineCrossProblemVO> voList = new ArrayList<>();
Map<String, String> IOdirMap = getDir(ioDir.getInDir(), ioDir.getOutDir());
vo.setGreenID(e.getGreenID());
vo.setTime(e.getTime()); for (TrunkLineCrossProblemEntity e : list) {
vo.setStatus(e.getStatus()); TrunkLineCrossProblemVO vo = new TrunkLineCrossProblemVO();
vo.setDir(e.getDir());
vo.setStatusCN(e.getStatusCN()); vo.setCrossID(e.getCrossID());
vo.setDir2(e2.getDir()); vo.setName(e.getName());
vo.setStatus2(e.getStatus());
vo.setStatusCN2(e.getStatusCN()); if (e.getDirection() != null) {
return vo; Map<String, Integer> directionMap = new HashMap<>();
for (String s : e.getDirection()) {
directionMap.put(s, directionMap.getOrDefault(s, 0) + 1);
}
Integer count = directionMap.getOrDefault(IOdirMap.get("dir"), 0);
if (count == 0) { // 不匹配
vo.setStatus_1(0);
vo.setStatus_2(0);
vo.setStatus_1_name("正常");
vo.setStatus_2_name("正常");
vo.setDir_1_name(IOdirMap.get("dirName"));
vo.setDir_2_name(IOdirMap.get("dirNameReverse"));
} else if (count == 1) { // 匹配一项
vo.setStatus_1(e.getStatus());
vo.setStatus_2(0);
vo.setStatus_2_name(getStatusName(e.getStatus()));
vo.setStatus_1_name("正常");
vo.setDir_1_name(IOdirMap.get("dirName"));
vo.setDir_2_name(IOdirMap.get("dirNameReverse"));
} else if (count == 2) { // 匹配两项
vo.setStatus_1(e.getStatus());
vo.setStatus_2(e.getStatus());
vo.setStatus_1_name(getStatusName(e.getStatus()));
vo.setStatus_2_name(getStatusName(e.getStatus()));
vo.setDir_1_name(IOdirMap.get("dirName"));
vo.setDir_2_name(IOdirMap.get("dirNameReverse"));
}
voList.add(vo);
} else {
vo.setStatus_1(0);
vo.setStatus_2(0);
vo.setStatus_1_name("正常");
vo.setStatus_2_name("正常");
vo.setDir_1_name(IOdirMap.get("dirName"));
vo.setDir_2_name(IOdirMap.get("dirNameReverse"));
voList.add(vo);
}
}
return voList;
}
private Map<String, String> getDir(Integer inDir, Integer outDir) {
// 1 北 3 东 5 南 7 西
// 0 北向南 2东向西 4 西向东 6 南向北
Map<String, String> result = new HashMap<>();
if (inDir == 5 && outDir == 1) { // 南向北
result.put("dir", "6");
result.put("dirName", "南向北");
result.put("dirNameReverse", "北向南");
return result;
} else if (inDir == 7 && outDir == 3) { // 西向东
result.put("dir", "4");
result.put("dirName", "西向东");
result.put("dirNameReverse", "东向西");
return result;
} else if (inDir == 3 && outDir == 7) { // 东向西
result.put("dir", "2");
result.put("dirName", "东向西");
result.put("dirNameReverse", "西向东");
return result;
} else if (inDir == 1 && outDir == 5) { // 北向南
result.put("dir", "0");
result.put("dirName", "北向南");
result.put("dirNameReverse", "南向北");
return result;
}
return Collections.emptyMap();
}
private String getStatusName(Integer status) {
switch(status) {
case -1:
case 0:
return "正常";
case 1:
return "失衡";
case 3:
return "拥堵";
case 4:
return "死锁";
case 5:
return "相位空放";
}
return "";
} }
} }
package net.wanji.opt.servicev2.judgeanalysis;
import net.wanji.databus.po.BaseAreaInfoPO;
import java.util.List;
/**
* <p>
* 区域基础信息
* </p>
*
* @Author wangtao
* @Date 2025-03-18
*/
public interface BaseAreaInfoService {
List<BaseAreaInfoPO> selectByType(Integer type);
}
package net.wanji.opt.servicev2.judgeanalysis.impl;
import net.wanji.common.framework.dubbointerface.impl.BaseDubboInterfaceImpl;
import net.wanji.common.framework.mapper.BaseInterfaceMapper;
import net.wanji.databus.dao.mapper.BaseAreaInfoMapper;
import net.wanji.databus.po.BaseAreaInfoPO;
import net.wanji.opt.entity.BaseAreaInfo;
import lombok.extern.slf4j.Slf4j;
import net.wanji.opt.servicev2.judgeanalysis.BaseAreaInfoService;
import org.apache.dubbo.config.annotation.Service;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.util.List;
/**
* <p>
* 区域基础信息
* </p>
*
* @Author wangtao
* @Date 2025-03-18
*/
@Slf4j
@Component
@Service
public class BaseAreaInfoServiceImpl implements BaseAreaInfoService {
@Resource
private BaseAreaInfoMapper baseAreaInfoMapper;
/**
* 根据区划类型查询对应集合(含子集)
* @param type
* @return
*/
public List<BaseAreaInfoPO> selectByType(Integer type){
List<BaseAreaInfoPO> list = baseAreaInfoMapper.selectByType(type);
if (list.size() > 0){
list.stream().forEach(item ->{
List<BaseAreaInfoPO> areaInfoPOList = baseAreaInfoMapper.selectListByParentCode(item.getId());
if (areaInfoPOList.size() > 0){
item.setAreaInfoPOList(areaInfoPOList);
}
});
}
return list;
}
}
package net.wanji.opt.synthesis.pojo;
import lombok.Data;
@Data
public class TrunkLineCrossProblemEntity {
private String crossID;
private String name;
private Integer inDir;
private Integer outDir;
private Integer status;
private String[] direction;
private String startTime;
}
...@@ -21,4 +21,14 @@ public class CrossStatusDistributionVO { ...@@ -21,4 +21,14 @@ public class CrossStatusDistributionVO {
private Double stopTimes; private Double stopTimes;
@ApiModelProperty(value = "时间") @ApiModelProperty(value = "时间")
private String startTime; private String startTime;
@ApiModelProperty(value = "车道号", notes = "")
private Integer laneNo;
@ApiModelProperty(value = "方向", notes = "")
private Integer dirType;
@ApiModelProperty(value = "方向描述", notes = "")
private String dirTypeName;
@ApiModelProperty(value = "转向功能", notes = "")
private Integer turnType;
@ApiModelProperty(value = "转向功能描述", notes = "")
private String turnTypeName;
} }
package net.wanji.opt.vo2;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
* @author duanruiming
* @date 2025/03/18 10:11
*/
@Data
@ApiModel(value = "GreenOptCrossOffsetVO", description = "态势监测-策略推荐-绿波优化相位差实体")
public class GreenOptCrossOffsetVO {
@ApiModelProperty(value = "原始路口相位差列表")
private List<CrossOffsetDetail> oriCrossOffsets;
@ApiModelProperty(value = "当前路口相位差列表")
private List<CrossOffsetDetail> curCrossOffsets;
@Data
@ApiModel(value = "CrossOffsetDetail", description = "")
public static class CrossOffsetDetail {
@ApiModelProperty(value = "路口编号")
private String crossId;
@ApiModelProperty(value = "方案相位差")
private Integer offset;
@ApiModelProperty(value = "方案号")
private Integer schemeNo;
}
}
package net.wanji.opt.vo2;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ApiModel(value = "TrunkLineCrossProblemVO", description = "干线路口事件描述")
public class TrunkLineCrossProblemVO {
@ApiModelProperty(value = "路口ID")
private String crossID;
@ApiModelProperty(value = "路口名称")
private String name;
@ApiModelProperty(value = "状态1")
private Integer status_1;
@ApiModelProperty(value = "状态2")
private Integer status_2;
@ApiModelProperty(value = "状态1名称")
private String status_1_name;
@ApiModelProperty(value = "状态2名称")
private String status_2_name;
@ApiModelProperty(value = "方向1")
private String dir_1_name;
@ApiModelProperty(value = "方向2")
private String dir_2_name;
}
...@@ -261,7 +261,7 @@ ...@@ -261,7 +261,7 @@
IFNULL(t2.type, '708') AS type, IFNULL(t2.type, '708') AS type,
t1.wkt, t1.wkt,
IFNULL(TIMESTAMPDIFF(SECOND, t2.start_time, IFNULL(t2.end_time, NOW())), 0) AS duration, IFNULL(TIMESTAMPDIFF(SECOND, t2.start_time, IFNULL(t2.end_time, NOW())), 0) AS duration,
DATE_FORMAT(IFNULL(t2.start_time, CURDATE()), '%Y年%m月%d日%H:%i') AS startTime DATE_FORMAT(IFNULL(t2.start_time, CURDATE()), '%H:%i:%s') AS startTime
FROM t_greenwave_info t1 FROM t_greenwave_info t1
LEFT JOIN ( LEFT JOIN (
SELECT green_id, MAX(start_time) AS start_time SELECT green_id, MAX(start_time) AS start_time
...@@ -288,7 +288,7 @@ ...@@ -288,7 +288,7 @@
IFNULL(t2.type, '700') AS type, IFNULL(t2.type, '700') AS type,
REPLACE(SUBSTRING(location, 7, 18), ' ', ',') AS wkt, REPLACE(SUBSTRING(location, 7, 18), ' ', ',') AS wkt,
IFNULL(TIMESTAMPDIFF(SECOND, t2.start_time, IFNULL(t2.end_time, NOW())), 0) AS duration, IFNULL(TIMESTAMPDIFF(SECOND, t2.start_time, IFNULL(t2.end_time, NOW())), 0) AS duration,
DATE_FORMAT(IFNULL(t2.start_time, CURDATE()), '%Y年%m月%d日%H:%i') AS startTime DATE_FORMAT(IFNULL(t2.start_time, CURDATE()), '%H:%i:%s') AS startTime
FROM t_base_cross_info t1 FROM t_base_cross_info t1
LEFT JOIN ( LEFT JOIN (
SELECT cross_id, MAX(start_time) AS start_time SELECT cross_id, MAX(start_time) AS start_time
...@@ -359,7 +359,7 @@ ...@@ -359,7 +359,7 @@
( (
select distinct t1.name, t1.id, ifnull(t2.type, '708') type, t1.wkt, select distinct t1.name, t1.id, ifnull(t2.type, '708') type, t1.wkt,
ifnull(TIMESTAMPDIFF(SECOND, t2.start_time, ifnull(t2.end_time,now())), 0) duration, ifnull(TIMESTAMPDIFF(SECOND, t2.start_time, ifnull(t2.end_time,now())), 0) duration,
DATE_FORMAT(ifnull(t2.start_time, curdate()), '%Y年%m月%d日%H:%i') as startTime, DATE_FORMAT(ifnull(t2.start_time, curdate()), '%H:%i:%s') as startTime,
case case
when t2.type = '706' then "干线缓行" when t2.type = '706' then "干线缓行"
when t2.type = '707' then "干线拥堵" when t2.type = '707' then "干线拥堵"
......
...@@ -13,7 +13,6 @@ ...@@ -13,7 +13,6 @@
<result property="dir" column="dir"></result> <result property="dir" column="dir"></result>
</resultMap> </resultMap>
<select id="getTrunkLineProblemDescribe" parameterType="String" resultMap="tlProblemDescribe"> <select id="getTrunkLineProblemDescribe" parameterType="String" resultMap="tlProblemDescribe">
select b.greenID ,b.status ,b.time , ( select b.greenID ,b.status ,b.time , (
case case
...@@ -74,5 +73,40 @@ ...@@ -74,5 +73,40 @@
</if> </if>
) b ) b
</select> </select>
<select id="getTrunkLineCrossProblem" parameterType="map" resultType="net.wanji.opt.synthesis.pojo.TrunkLineCrossProblemEntity">
select
a.cross_id,
b.name,
a.`status`,
a.direction ,
MAX(a.start_time) as start_time
from
t_cross_data_hist a
left join t_base_cross_info b on
a.cross_id = b.id
where
a.cross_id in (
select
cross_id
from
t_greenwave_cross
where
green_id = #{greenID})
<if test="time != null and time != ''">
and DATE_FORMAT(a.start_time, '%Y-%m-%d %H:%i:%s') <![CDATA[ <= ]]> DATE_FORMAT(#{time}, '%Y-%m-%d %H:%i:%s')
</if>
group by
a.cross_id
</select>
<select id="getIODir" parameterType="map" resultType="net.wanji.opt.synthesis.pojo.TrunkLineCrossProblemEntity">
select
distinct a.in_dir,
a.out_dir
from
t_greenwave_cross a
where
a.green_id = #{greenID}
</select>
</mapper> </mapper>
...@@ -127,7 +127,7 @@ public class BaseEnum { ...@@ -127,7 +127,7 @@ public class BaseEnum {
private String nick; private String nick;
public static SignalDirectionEnum getNickByCode(int code) { public static SignalDirectionEnum getNickByCode(Integer code) {
for (SignalDirectionEnum signalDirectionEnum : SignalDirectionEnum.values()) { for (SignalDirectionEnum signalDirectionEnum : SignalDirectionEnum.values()) {
if (signalDirectionEnum.getCode() == code) { if (signalDirectionEnum.getCode() == code) {
return signalDirectionEnum; return signalDirectionEnum;
...@@ -136,7 +136,7 @@ public class BaseEnum { ...@@ -136,7 +136,7 @@ public class BaseEnum {
return null; return null;
} }
public static String getNameByCode(int code) { public static String getNameByCode(Integer code) {
for (SignalDirectionEnum signalDirectionEnum : SignalDirectionEnum.values()) { for (SignalDirectionEnum signalDirectionEnum : SignalDirectionEnum.values()) {
if (signalDirectionEnum.getCode() == code) { if (signalDirectionEnum.getCode() == code) {
return signalDirectionEnum.getName(); return signalDirectionEnum.getName();
......
...@@ -39,4 +39,6 @@ public interface BaseAreaInfoMapper { ...@@ -39,4 +39,6 @@ public interface BaseAreaInfoMapper {
List<BaseAreaInfoPO> selectAllArea(Integer type); List<BaseAreaInfoPO> selectAllArea(Integer type);
List<AreaDetailPOExt> selectAllJoinDetail(String crossName, Integer isSignal, Integer isStart, Integer isSend); List<AreaDetailPOExt> selectAllJoinDetail(String crossName, Integer isSignal, Integer isStart, Integer isSend);
List<BaseAreaInfoPO> selectListByParentCode(Integer parentCode);
} }
...@@ -5,6 +5,7 @@ import io.swagger.annotations.ApiModelProperty; ...@@ -5,6 +5,7 @@ import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import java.util.Date; import java.util.Date;
import java.util.List;
/** /**
* @author duanruiming * @author duanruiming
...@@ -46,4 +47,10 @@ public class BaseAreaInfoPO { ...@@ -46,4 +47,10 @@ public class BaseAreaInfoPO {
/** 修改时间 */ /** 修改时间 */
@ApiModelProperty(value = "修改时间",notes = "") @ApiModelProperty(value = "修改时间",notes = "")
private Date gmtModified ; private Date gmtModified ;
/**
* 用于封装子集数据
*/
List<BaseAreaInfoPO> areaInfoPOList;
} }
...@@ -131,4 +131,10 @@ ...@@ -131,4 +131,10 @@
ORDER BY t_cross.id ORDER BY t_cross.id
</select> </select>
<select id="selectListByParentCode" resultType="net.wanji.databus.po.BaseAreaInfoPO">
select <include refid="baseColumnList"/>
from t_base_area_info
where parent_code = #{parentCode}
</select>
</mapper> </mapper>
...@@ -24,12 +24,12 @@ import java.util.List; ...@@ -24,12 +24,12 @@ import java.util.List;
public class CodeGeneratorMyBatis1 { public class CodeGeneratorMyBatis1 {
private static final String dburl = "jdbc:mysql://localhost:3306/wjdit_ecosystem_db_v1.0.0?serverTimezone=Asia/Shanghai&useUnicode=true&useSSL=false&characterEncoding=utf8"; private static final String dburl = "jdbc:mysql://37.12.182.29:3306/wjdit_ecosystem_db_v1.0.0?serverTimezone=Asia/Shanghai&useUnicode=true&useSSL=false&characterEncoding=utf8";
private static final String userName = "root"; private static final String userName = "root";
private static final String password = "123456"; private static final String password = "Wanji300552";
private static final String TABLE_NAMES ="t_analysis_problem_cross_day"; private static final String TABLE_NAMES ="t_base_area_info";
private static String ENTITY_NAME = null; private static String ENTITY_NAME = null;
private static final String AUTHOR ="fengyi"; private static final String AUTHOR ="wangtao";
private static final boolean OVERITE_FILE = true; //是否覆盖源文件 private static final boolean OVERITE_FILE = true; //是否覆盖源文件
private static final String PARENT_PACAGE = "net.wanji"; private static final String PARENT_PACAGE = "net.wanji";
...@@ -69,8 +69,8 @@ public class CodeGeneratorMyBatis1 { ...@@ -69,8 +69,8 @@ public class CodeGeneratorMyBatis1 {
// 全局配置 // 全局配置
GlobalConfig gc = new GlobalConfig(); GlobalConfig gc = new GlobalConfig();
// String projectPath = "./holo-decision-big-screen"; String projectPath = "signal-optimize-service";
String projectPath = "./wj-gernerator/output"; // String projectPath = "./wj-gernerator/output";
gc.setOutputDir(projectPath+"/src/main/java"); gc.setOutputDir(projectPath+"/src/main/java");
gc.setAuthor(AUTHOR); gc.setAuthor(AUTHOR);
...@@ -105,8 +105,8 @@ public class CodeGeneratorMyBatis1 { ...@@ -105,8 +105,8 @@ public class CodeGeneratorMyBatis1 {
pc.setController("controllerv2"+subModulePackage); pc.setController("controllerv2"+subModulePackage);
pc.setEntity("entity"+subModulePackage); pc.setEntity("entity"+subModulePackage);
pc.setMapper("dao.mapper"+subModulePackage); pc.setMapper("dao.mapper"+subModulePackage);
pc.setService("service2"+subModulePackage); pc.setService("servicev2"+subModulePackage);
pc.setServiceImpl("service2"+subModulePackage+".impl"); pc.setServiceImpl("servicev2"+subModulePackage+".impl");
mpg.setPackageInfo(pc); mpg.setPackageInfo(pc);
......
...@@ -12,6 +12,6 @@ import net.wanji.common.framework.dubbointerface.BaseDubboInterface; ...@@ -12,6 +12,6 @@ import net.wanji.common.framework.dubbointerface.BaseDubboInterface;
* @Author ${author} * @Author ${author}
* @Date ${date} * @Date ${date}
*/ */
public interface ${entity}Provider extends BaseDubboInterface<${entity}> { public interface ${entity}Service extends BaseDubboInterface<${entity}> {
} }
...@@ -6,7 +6,7 @@ import net.wanji.common.framework.exception.DubboProviderException; ...@@ -6,7 +6,7 @@ import net.wanji.common.framework.exception.DubboProviderException;
import net.wanji.common.framework.mapper.BaseInterfaceMapper; import net.wanji.common.framework.mapper.BaseInterfaceMapper;
import net.wanji.common.framework.rest.JsonViewObject; import net.wanji.common.framework.rest.JsonViewObject;
import net.wanji.${package.ModuleName}.entity.${entity}; import net.wanji.${package.ModuleName}.entity.${entity};
import net.wanji.${package.ModuleName}.service.${entity}Provider; import net.wanji.${package.ModuleName}.service.${entity}Service;
import ${package.Mapper}.${table.mapperName}; import ${package.Mapper}.${table.mapperName};
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
...@@ -27,7 +27,7 @@ import javax.annotation.Resource; ...@@ -27,7 +27,7 @@ import javax.annotation.Resource;
@Slf4j @Slf4j
@Component @Component
@Service @Service
public class ${entity}ProviderImpl extends BaseDubboInterfaceImpl<${entity}> implements ${entity}Provider { public class ${entity}ServiceImpl extends BaseDubboInterfaceImpl<${entity}> implements ${entity}Service {
@Resource @Resource
private ${table.mapperName} ${table.entityPath}Mapper; private ${table.mapperName} ${table.entityPath}Mapper;
......
...@@ -9,7 +9,7 @@ import net.wanji.common.framework.exception.DubboProviderException; ...@@ -9,7 +9,7 @@ import net.wanji.common.framework.exception.DubboProviderException;
import net.wanji.common.framework.i18n.I18nResourceBundle; import net.wanji.common.framework.i18n.I18nResourceBundle;
import net.wanji.common.framework.rest.AbstractRestServer; import net.wanji.common.framework.rest.AbstractRestServer;
import net.wanji.common.framework.rest.impl.AbstractRestServerImpl; import net.wanji.common.framework.rest.impl.AbstractRestServerImpl;
import net.wanji.${package.ModuleName}.service.${entity}Provider; import net.wanji.${package.ModuleName}.service.${entity}Service;
import net.wanji.${package.ModuleName}.entity.${entity}; import net.wanji.${package.ModuleName}.entity.${entity};
import net.wanji.common.framework.rest.Page; import net.wanji.common.framework.rest.Page;
...@@ -44,8 +44,8 @@ import java.util.Map; ...@@ -44,8 +44,8 @@ import java.util.Map;
@RestController @RestController
@Slf4j @Slf4j
@RequestMapping("/<#if controllerMappingHyphenStyle??>${controllerMappingHyphen}<#else>${table.entityPath}</#if>") @RequestMapping("/<#if controllerMappingHyphenStyle??>${controllerMappingHyphen}<#else>${table.entityPath}</#if>")
@Api(value="${entity}RestServer", description="${table.comment!}接口", tags = "${table.comment}") @Api(value="${entity}Controller", description="${table.comment!}接口", tags = "${table.comment}")
public class ${entity}RestServer extends AbstractRestServerImpl<${entity}> implements AbstractRestServer<${entity}>{ public class ${entity}Controller extends AbstractRestServerImpl<${entity}> implements AbstractRestServer<${entity}>{
@Autowired @Autowired
private ${table.serviceName} ${table.serviceName?uncap_first}; private ${table.serviceName} ${table.serviceName?uncap_first};
......
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