Commit 8c2f4972 authored by wangyecheng's avatar wangyecheng

Merge remote-tracking branch 'origin/master'

parents 8b62f4fa 72528379
...@@ -131,4 +131,10 @@ public class AnalysisReportCrossOptimizeDetail implements Serializable { ...@@ -131,4 +131,10 @@ public class AnalysisReportCrossOptimizeDetail implements Serializable {
*/ */
private Integer problemCount; private Integer problemCount;
private Integer lastWeekOptimizeCount;
private Integer lastWeekOptimizeDuration;
private Integer lastWeekProblemCount;
} }
...@@ -36,7 +36,7 @@ import java.util.stream.Collectors; ...@@ -36,7 +36,7 @@ import java.util.stream.Collectors;
*/ */
@Component @Component
@Slf4j @Slf4j
@Profile("test") @Profile("docker")
public class HisenseGreenChartTask { public class HisenseGreenChartTask {
@Resource @Resource
...@@ -47,8 +47,7 @@ public class HisenseGreenChartTask { ...@@ -47,8 +47,7 @@ public class HisenseGreenChartTask {
private GreenChartSchemeHistMapper greenChartSchemeHistMapper; private GreenChartSchemeHistMapper greenChartSchemeHistMapper;
@Scheduled(fixedRate = 1 * 60 * 1000, initialDelay = 1 * 60 * 1000) @Scheduled(fixedRate = 10 * 60 * 1000, initialDelay = 1 * 60 * 1000)
//@Scheduled(fixedRate = 10 * 60 * 1000, initialDelay = 30 * 1000)
public void getGreenChart() { public void getGreenChart() {
try { try {
ObjectMapper mapper = JacksonUtils.getInstance(); ObjectMapper mapper = JacksonUtils.getInstance();
...@@ -309,7 +308,6 @@ public class HisenseGreenChartTask { ...@@ -309,7 +308,6 @@ public class HisenseGreenChartTask {
String crossId = greenCrossDirDTO.getCrossId(); String crossId = greenCrossDirDTO.getCrossId();
Integer distance = greenCrossDirDTO.getDistance(); Integer distance = greenCrossDirDTO.getDistance();
distances.add(distance * 1.0); distances.add(distance * 1.0);
//String crossId = "13MQJ0B5SI0";
String crossKey = CommonUtils.getStrJoin(String.valueOf(crossId), String.valueOf(indexDir)); String crossKey = CommonUtils.getStrJoin(String.valueOf(crossId), String.valueOf(indexDir));
// 获取海信环相位信息 // 获取海信环相位信息
SchemeGreenDirGreenTimeDTO firstGreenTimeDTO = greenDirGreenTimeMap.get(crossKey); SchemeGreenDirGreenTimeDTO firstGreenTimeDTO = greenDirGreenTimeMap.get(crossKey);
......
...@@ -34,7 +34,7 @@ public class HisenseSchemeRingPhaseInfoTask { ...@@ -34,7 +34,7 @@ public class HisenseSchemeRingPhaseInfoTask {
@Resource @Resource
private GreenChartSchemeRingPhaseMapper greenChartSchemeRingPhaseMapper; private GreenChartSchemeRingPhaseMapper greenChartSchemeRingPhaseMapper;
@Scheduled(fixedRate = 1 * 60 * 1000, initialDelay = 1 * 60 * 1000) @Scheduled(fixedRate = 10 * 60 * 1000, initialDelay = 1 * 60 * 1000)
public void getSchemeRingPhase() { public void getSchemeRingPhase() {
List<SchemeGreenDirGreenTimeDTO> schemeGreenDirGreenTimeDTOS = new ArrayList<>(); List<SchemeGreenDirGreenTimeDTO> schemeGreenDirGreenTimeDTOS = new ArrayList<>();
ObjectMapper mapper = JacksonUtils.getInstance(); ObjectMapper mapper = JacksonUtils.getInstance();
......
...@@ -19,11 +19,13 @@ import net.wanji.opt.dao.mapper.HoloEventMapper; ...@@ -19,11 +19,13 @@ import net.wanji.opt.dao.mapper.HoloEventMapper;
import net.wanji.opt.dao.mapper.StrategyCrossResultMapper; import net.wanji.opt.dao.mapper.StrategyCrossResultMapper;
import net.wanji.opt.dao.mapper.StrategyGreenOptHistMapper; import net.wanji.opt.dao.mapper.StrategyGreenOptHistMapper;
import net.wanji.opt.dao.mapper.evaluation.EventInfoMapper; import net.wanji.opt.dao.mapper.evaluation.EventInfoMapper;
import net.wanji.opt.dao.mapper.judgeanalysis.AiOptimizeStatisticMapper;
import net.wanji.opt.dao.mapper.report.AnalysisGreenWaveOptimizeWeekMapper; import net.wanji.opt.dao.mapper.report.AnalysisGreenWaveOptimizeWeekMapper;
import net.wanji.opt.dao.mapper.report.AnalysisReportCrossOptimizeDetailMapper; import net.wanji.opt.dao.mapper.report.AnalysisReportCrossOptimizeDetailMapper;
import net.wanji.opt.dto.report.GreenHistIndexDTO; import net.wanji.opt.dto.report.GreenHistIndexDTO;
import net.wanji.opt.dto.report.StrategyGreenOptHistDTO; import net.wanji.opt.dto.report.StrategyGreenOptHistDTO;
import net.wanji.opt.entity.evaluation.EventInfo; import net.wanji.opt.entity.evaluation.EventInfo;
import net.wanji.opt.entity.judgeanalysis.AiOptimizeStatistic;
import net.wanji.opt.entity.report.AnalysisGreenWaveOptimizeWeek; import net.wanji.opt.entity.report.AnalysisGreenWaveOptimizeWeek;
import net.wanji.opt.entity.report.AnalysisReportCrossOptimizeDetail; import net.wanji.opt.entity.report.AnalysisReportCrossOptimizeDetail;
import net.wanji.opt.po.base.CrossLaneDataHistPoExtend; import net.wanji.opt.po.base.CrossLaneDataHistPoExtend;
...@@ -84,6 +86,8 @@ public class ReportGreenAndCrossOptimizeStatisticTask { ...@@ -84,6 +86,8 @@ public class ReportGreenAndCrossOptimizeStatisticTask {
AnalysisReportCrossOptimizeDetailMapper analysisReportCrossOptimizeDetailMapper; AnalysisReportCrossOptimizeDetailMapper analysisReportCrossOptimizeDetailMapper;
@Resource @Resource
HoloEventMapper holoEventMapper; HoloEventMapper holoEventMapper;
@Resource
AiOptimizeStatisticMapper aiOptimizeStatisticMapper;
/** /**
...@@ -204,8 +208,8 @@ public class ReportGreenAndCrossOptimizeStatisticTask { ...@@ -204,8 +208,8 @@ public class ReportGreenAndCrossOptimizeStatisticTask {
Date nowDate = cn.hutool.core.date.DateUtil.date(); Date nowDate = cn.hutool.core.date.DateUtil.date();
Date beginOfDay = cn.hutool.core.date.DateUtil.beginOfDay(nowDate);//.lastWeek();// Date beginOfDay = cn.hutool.core.date.DateUtil.beginOfDay(nowDate);//.lastWeek();//
// beginOfDay = cn.hutool.core.date.DateUtil.lastWeek(); beginOfDay = cn.hutool.core.date.DateUtil.lastWeek();
// beginOfDay = cn.hutool.core.date.DateUtil.beginOfWeek(beginOfDay); beginOfDay = cn.hutool.core.date.DateUtil.beginOfWeek(beginOfDay);
Date endOfDay = cn.hutool.core.date.DateUtil.endOfDay(nowDate);//DateUtil.endOfDay(DateUtil.date()); Date endOfDay = cn.hutool.core.date.DateUtil.endOfDay(nowDate);//DateUtil.endOfDay(DateUtil.date());
...@@ -246,7 +250,7 @@ public class ReportGreenAndCrossOptimizeStatisticTask { ...@@ -246,7 +250,7 @@ public class ReportGreenAndCrossOptimizeStatisticTask {
} }
} }
long et1 = System.currentTimeMillis(); long et1 = System.currentTimeMillis();
log.info("查询策略优化记录耗时:{}ms,参数:{}", et1 - st1,queryWrapper.toString()); log.info("查询策略优化记录耗时:{}ms,参数:{}", et1 - st1, queryWrapper.toString());
//==========================================================================================================// //==========================================================================================================//
List<AnalysisReportCrossOptimizeDetail> optimizeList = new ArrayList<>(); List<AnalysisReportCrossOptimizeDetail> optimizeList = new ArrayList<>();
...@@ -256,14 +260,14 @@ public class ReportGreenAndCrossOptimizeStatisticTask { ...@@ -256,14 +260,14 @@ public class ReportGreenAndCrossOptimizeStatisticTask {
String crossId = sps[0]; String crossId = sps[0];
String strategy = sps[1]; String strategy = sps[1];
String eventType = null; String eventType = null;
if (Objects.equals("1",strategy)) { if (Objects.equals("1", strategy)) {
eventType = "701"; eventType = "701";
}else if (Objects.equals("2",strategy)) { } else if (Objects.equals("2", strategy)) {
eventType = "702"; eventType = "702";
}else if (Objects.equals("3",strategy)) { } else if (Objects.equals("3", strategy)) {
eventType = "703"; eventType = "703";
}else if (Objects.equals("4",strategy)) { } else if (Objects.equals("4", strategy)) {
eventType = "704"; eventType = "704";
} }
List<StrategyCrossResultEntity> value = entry.getValue(); List<StrategyCrossResultEntity> value = entry.getValue();
...@@ -312,7 +316,7 @@ public class ReportGreenAndCrossOptimizeStatisticTask { ...@@ -312,7 +316,7 @@ public class ReportGreenAndCrossOptimizeStatisticTask {
detail.setYearWeek(Integer.parseInt(issueTime.getYear() + "" + issueTime.getWeekOfWeekyear())); detail.setYearWeek(Integer.parseInt(issueTime.getYear() + "" + issueTime.getWeekOfWeekyear()));
detail.setWeekDay(issueTime.getDayOfWeek() + 1); detail.setWeekDay(issueTime.getDayOfWeek() + 1);
detail.setWeekStartTime(cn.hutool.core.date.DateUtil.beginOfWeek(minTime.getIssueTime()).toLocalDateTime()); detail.setWeekStartTime(cn.hutool.core.date.DateUtil.beginOfWeek(minTime.getIssueTime()).toLocalDateTime());
;
detail.setWeekEndTime(cn.hutool.core.date.DateUtil.endOfWeek(minTime.getIssueTime()).toLocalDateTime()); detail.setWeekEndTime(cn.hutool.core.date.DateUtil.endOfWeek(minTime.getIssueTime()).toLocalDateTime());
detail.setOptimizeCount((int) count); detail.setOptimizeCount((int) count);
detail.setOptimizeDuration(duration); detail.setOptimizeDuration(duration);
...@@ -342,14 +346,32 @@ public class ReportGreenAndCrossOptimizeStatisticTask { ...@@ -342,14 +346,32 @@ public class ReportGreenAndCrossOptimizeStatisticTask {
//===========================================================================// //===========================================================================//
params.clear(); params.clear();
params.put("crossId", crossId); params.put("crossId", crossId);
params.put("dt",DateUtil.formatDate(minTime.getIssueTime(),"yyyyMMdd")); params.put("dt", DateUtil.formatDate(minTime.getIssueTime(), "yyyyMMdd"));
params.put("eventType",eventType); params.put("eventType", eventType);
EventStatisticPo countPo = holoEventMapper.findCrossEventCount(params); EventStatisticPo countPo = holoEventMapper.findCrossEventCount(params);
if (countPo != null) { if (countPo != null) {
detail.setProblemCount(countPo.getEventCount()); detail.setProblemCount(countPo.getEventCount());
} }
params.put("dt", DateUtil.formatDate(lastWeekDateStartTime.toDate(), "yyyyMMdd"));
//===========================================================================//
EventStatisticPo lastCountPo = holoEventMapper.findCrossEventCount(params);
if (lastCountPo != null) {
detail.setLastWeekOptimizeCount(lastCountPo.getEventCount());
}
//===========================================================================//
AiOptimizeStatistic param = new AiOptimizeStatistic();
param.setCrossId(crossId);
param.setStatisticTime(Integer.valueOf( DateUtil.formatDate(lastWeekDateStartTime.toDate(), "yyyyMMdd")));
param.setStrategy(Integer.valueOf(strategy));
List<AiOptimizeStatistic> lastOptList = aiOptimizeStatisticMapper.findAiOptimizeStatisticByCondition(param);
if (!lastOptList.isEmpty()) {
detail.setLastWeekOptimizeDuration(lastOptList.get(0).getOptimizeDuration());
detail.setLastWeekOptimizeCount(lastOptList.get(0).getOptimizeCount());
}
//===========================================================================// //===========================================================================//
optimizeList.add(detail); optimizeList.add(detail);
if (optimizeList.size() % 100 == 0) { if (optimizeList.size() % 100 == 0) {
analysisReportCrossOptimizeDetailMapper.insertBatch(optimizeList); analysisReportCrossOptimizeDetailMapper.insertBatch(optimizeList);
optimizeList.clear(); optimizeList.clear();
......
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
<!-- 通用设置 --> <!-- 通用设置 -->
<!-- 通用查询列 --> <!-- 通用查询列 -->
<sql id="Base_Column_List"> <sql id="Base_Column_List">
cross_id, strategy, optimize_count, optimize_duration, statistic_time, gmt_create, gmt_modified, type cross_id, strategy, optimize_count, optimize_duration, statistic_time, type
</sql> </sql>
<!-- 通用条件列 --> <!-- 通用条件列 -->
......
...@@ -263,7 +263,7 @@ ...@@ -263,7 +263,7 @@
) )
</insert> </insert>
<!-- 批量插入 --> <!-- 批量插入 -->
<insert id="insertBatch" parameterType="net.wanji.opt.entity.report.AnalysisGreenWaveOptimizeWeek"> <insert id="insertBatch" parameterType="net.wanji.opt.entity.report.AnalysisReportCrossOptimizeDetail">
INSERT INTO t_analysis_report_cross_optimize_detail ( INSERT INTO t_analysis_report_cross_optimize_detail (
cross_id, cross_id,
week_day, week_day,
...@@ -287,7 +287,10 @@ ...@@ -287,7 +287,10 @@
last_week_speed, last_week_speed,
last_week_congest_index, last_week_congest_index,
dirs, dirs,
problem_count problem_count,
last_week_optimize_count,
last_week_optimize_duration,
last_week_problem_count
) VALUES ) VALUES
<foreach collection="list" item="entity" separator=","> <foreach collection="list" item="entity" separator=",">
( (
...@@ -314,6 +317,9 @@ ...@@ -314,6 +317,9 @@
,#{entity.lastWeekCongestIndex} ,#{entity.lastWeekCongestIndex}
,#{entity.dirs} ,#{entity.dirs}
,#{entity.problemCount} ,#{entity.problemCount}
,#{entity.lastWeekOptimizeCount}
,#{entity.lastWeekOptimizeDuration}
,#{entity.lastWeekProblemCount}
) )
</foreach> </foreach>
ON DUPLICATE KEY UPDATE ON DUPLICATE KEY UPDATE
...@@ -339,6 +345,9 @@ ...@@ -339,6 +345,9 @@
last_week_speed = VALUES(last_week_speed), last_week_speed = VALUES(last_week_speed),
last_week_congest_index = VALUES(last_week_congest_index), last_week_congest_index = VALUES(last_week_congest_index),
dirs = VALUES(dirs), dirs = VALUES(dirs),
problem_count = VALUES(problem_count) problem_count = VALUES(problem_count),
last_week_optimize_count = VALUES(last_week_optimize_count),
last_week_optimize_duration = VALUES(last_week_optimize_duration),
last_week_problem_count = VALUES(last_week_problem_count)
</insert> </insert>
</mapper> </mapper>
...@@ -14,11 +14,14 @@ import net.wanji.opt.controllerv2.judgeanalysis.design.response.areaproblem.Area ...@@ -14,11 +14,14 @@ import net.wanji.opt.controllerv2.judgeanalysis.design.response.areaproblem.Area
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.CrossProblemDirTrendAnalysisResult; 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.GreenCrossProblemTrendAnalysisResult;
import net.wanji.opt.controllerv2.judgeanalysis.design.response.greenproblem.GreenHighFrequencyProblemReasonResult;
import net.wanji.opt.controllerv2.judgeanalysis.design.response.greenproblem.GreenProblemTimeDirReasonResult; import net.wanji.opt.controllerv2.judgeanalysis.design.response.greenproblem.GreenProblemTimeDirReasonResult;
import net.wanji.opt.entity.judgeanalysis.AnalysisProblemGreenDay; import net.wanji.opt.entity.judgeanalysis.AnalysisProblemGreenDay;
import net.wanji.opt.servicev2.judgeanalysis.AnalysisProblemCrossDayService; import net.wanji.opt.servicev2.judgeanalysis.AnalysisProblemCrossDayService;
import net.wanji.opt.servicev2.judgeanalysis.AnalysisProblemGreenDayService; import net.wanji.opt.servicev2.judgeanalysis.AnalysisProblemGreenDayService;
import net.wanji.opt.synthesis.pojo.TrunkLineCrossProblemEntity;
import net.wanji.opt.vo2.CrossOptAnalysisVO; import net.wanji.opt.vo2.CrossOptAnalysisVO;
import net.wanji.opt.vo2.TrunkLineCrossProblemVO;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
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;
...@@ -159,4 +162,26 @@ public class AnalysisProblemGreenDayController { ...@@ -159,4 +162,26 @@ public class AnalysisProblemGreenDayController {
} }
} }
@ApiOperation(value = "干线频发问题监测【研判分析-干线-左下角】", notes = "干线频发问题监测")
@ApiImplicitParams({
@ApiImplicitParam(name = "greenId", value = "绿波ID", required = true, dataType = "Integer", paramType = "query"),
@ApiImplicitParam(name = "startTime", value = "日期,格式:yyyy-MM-dd HH:mm:ss", required = true, dataType = "String"),
@ApiImplicitParam(name = "endTime", value = "日期,格式:yyyy-MM-dd HH:mm:ss", required = true, dataType = "String")
})
@GetMapping(value = "/getGreenHighFrequencyProblem")
@ApiResponses({
@ApiResponse(code = 200, message = "OK", response = GreenHighFrequencyProblemReasonResult.class),
})
public JsonViewObject getTrunkLineCrossProblem(Integer greenId, String startTime ,String endTim) {
JsonViewObject object = JsonViewObject.newInstance();
try {
} catch (Exception e) {
log.error("获取干线路口状态失败: ", e);
return JsonViewObject.newInstance().fail("获取干线路口状态失败");
}
return object;
}
} }
\ No newline at end of file
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 GreenHighFrequencyProblemReasonResult extends ParentResult {
private List<JudTrunkLineCrossProblemEntity> content;
public List<JudTrunkLineCrossProblemEntity> getContent() {
return content;
}
public GreenHighFrequencyProblemReasonResult setContent( List<JudTrunkLineCrossProblemEntity> content) {
this.content = content;
return this;
}
@Override
public String toString() {
return JSON.toJSONString(this);
}
}
@Data
class JudTrunkLineCrossProblemEntity {
@ApiModelProperty(value = "干线ID",example = "")
private String greenId;
@ApiModelProperty(value = "路口ID",example = "")
private String crossId;
@ApiModelProperty(value = "路口名称",example = "")
private String crossName;
@ApiModelProperty(value = "绿波正向方向:1~8",example = "5")
private Integer inDir;
@ApiModelProperty(value = "绿波反向方向:1~8",example = "1")
private Integer outDir;
@ApiModelProperty(value = "顺序",example = "1")
private Integer sort;
@ApiModelProperty(value = "正向绿波路段状态 1畅通 2缓行 3拥堵",example = "2")
private Integer statusL;
@ApiModelProperty(value = "正向绿波路段状态 1畅通 2缓行 3拥堵",example = "3")
private Integer statusR;
}
...@@ -15,6 +15,7 @@ import net.wanji.opt.controllerv2.report.design.ImportCrossReportAnalysis; ...@@ -15,6 +15,7 @@ import net.wanji.opt.controllerv2.report.design.ImportCrossReportAnalysis;
import net.wanji.opt.controllerv2.report.design.ImportGreenReportAnalysis; import net.wanji.opt.controllerv2.report.design.ImportGreenReportAnalysis;
import net.wanji.opt.controllerv2.report.vo.CrossOptimizeResultResponseVO; import net.wanji.opt.controllerv2.report.vo.CrossOptimizeResultResponseVO;
import net.wanji.opt.controllerv2.report.vo.GreenWaveOptimizeAnalysisResultResponseDTO; import net.wanji.opt.controllerv2.report.vo.GreenWaveOptimizeAnalysisResultResponseDTO;
import net.wanji.opt.controllerv2.report.vo.ImportCrossAnalysisResponseVO;
import net.wanji.opt.controllerv2.report.vo.ImportGreenReportAnalysisResponseVO; import net.wanji.opt.controllerv2.report.vo.ImportGreenReportAnalysisResponseVO;
import net.wanji.opt.servicev2.report.AnalysisGreenWaveOptimizeWeekService; import net.wanji.opt.servicev2.report.AnalysisGreenWaveOptimizeWeekService;
import net.wanji.opt.servicev2.report.CrossRidLaneService; import net.wanji.opt.servicev2.report.CrossRidLaneService;
...@@ -56,7 +57,7 @@ public class CrossOptimizeAnalysisController { ...@@ -56,7 +57,7 @@ public class CrossOptimizeAnalysisController {
public JsonViewObject getTotalityData(Integer year,Integer week,@RequestParam(required = false) String crossIds) { public JsonViewObject getTotalityData(Integer year,Integer week,@RequestParam(required = false) String crossIds) {
JsonViewObject jsonViewObject = JsonViewObject.newInstance(); JsonViewObject jsonViewObject = JsonViewObject.newInstance();
try { try {
List<CrossOptimizeResultResponseVO> resultResponseVOS = crossRidLaneService.getTotalityData(year,week,crossIds); CrossOptimizeResultResponseVO resultResponseVOS = crossRidLaneService.getTotalityData(year,week,crossIds);
jsonViewObject.success(resultResponseVOS); jsonViewObject.success(resultResponseVOS);
} catch (Exception e) { } catch (Exception e) {
jsonViewObject.fail(I18nResourceBundle.getConstants("GET_FAILED_MSG")); jsonViewObject.fail(I18nResourceBundle.getConstants("GET_FAILED_MSG"));
...@@ -78,7 +79,8 @@ public class CrossOptimizeAnalysisController { ...@@ -78,7 +79,8 @@ public class CrossOptimizeAnalysisController {
public JsonViewObject getProblemDetail(Integer year,Integer week,@RequestParam(required = false) String crossIds) { public JsonViewObject getProblemDetail(Integer year,Integer week,@RequestParam(required = false) String crossIds) {
JsonViewObject jsonViewObject = JsonViewObject.newInstance(); JsonViewObject jsonViewObject = JsonViewObject.newInstance();
try { try {
List<ImportCrossAnalysisResponseVO> responseVOS = crossRidLaneService.getProblemDetail(year,week,crossIds);
jsonViewObject.success(responseVOS);
} catch (Exception e) { } catch (Exception e) {
jsonViewObject.fail(I18nResourceBundle.getConstants("GET_FAILED_MSG")); jsonViewObject.fail(I18nResourceBundle.getConstants("GET_FAILED_MSG"));
log.error("{} getAll error", this.getClass().getSimpleName(), e); log.error("{} getAll error", this.getClass().getSimpleName(), e);
......
package net.wanji.opt.controllerv2.report; package net.wanji.opt.controllerv2.report;
import com.alibaba.fastjson.JSONObject;
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;
...@@ -13,10 +14,16 @@ import net.wanji.opt.controllerv2.report.design.CrossImportProblemAnalysisResult ...@@ -13,10 +14,16 @@ import net.wanji.opt.controllerv2.report.design.CrossImportProblemAnalysisResult
import net.wanji.opt.controllerv2.report.design.CrossProblemTotalityAnalysisResult; import net.wanji.opt.controllerv2.report.design.CrossProblemTotalityAnalysisResult;
import net.wanji.opt.controllerv2.report.design.CrossRunStateAnalysisResult; import net.wanji.opt.controllerv2.report.design.CrossRunStateAnalysisResult;
import net.wanji.opt.controllerv2.report.design.CrossRunStatePeakAnalysisResult; import net.wanji.opt.controllerv2.report.design.CrossRunStatePeakAnalysisResult;
import net.wanji.opt.servicev2.report.CrossProblemService;
import net.wanji.opt.vo2.report.CrossImportProblemResultResponseVO;
import net.wanji.opt.vo2.report.CrossProblemTotalityResult;
import org.springframework.beans.factory.annotation.Autowired;
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.RestController; import org.springframework.web.bind.annotation.RestController;
import java.util.List;
/** /**
* <p> * <p>
* 路口运行状态 接口API * 路口运行状态 接口API
...@@ -30,6 +37,8 @@ import org.springframework.web.bind.annotation.RestController; ...@@ -30,6 +37,8 @@ import org.springframework.web.bind.annotation.RestController;
@RequestMapping("/cross-problem") @RequestMapping("/cross-problem")
@Api(value="CrossProblemController", description="", tags = "路口分析报告-周报") @Api(value="CrossProblemController", description="", tags = "路口分析报告-周报")
public class CrossProblemController { public class CrossProblemController {
@Autowired
private CrossProblemService crossProblemService;
@ApiOperation(httpMethod="GET",value="3.1-区域路口问题总体分析", notes="") @ApiOperation(httpMethod="GET",value="3.1-区域路口问题总体分析", notes="")
@ApiImplicitParams({ @ApiImplicitParams({
...@@ -44,7 +53,11 @@ public class CrossProblemController { ...@@ -44,7 +53,11 @@ public class CrossProblemController {
public JsonViewObject getTotalitySituation(String crossIds,Integer year,Integer week) { public JsonViewObject getTotalitySituation(String crossIds,Integer year,Integer week) {
JsonViewObject jsonViewObject = JsonViewObject.newInstance(); JsonViewObject jsonViewObject = JsonViewObject.newInstance();
try { try {
String yearWeek = year.toString() + week.toString();
Integer temp = week - 1;
String yearWeekAfter = year.toString() + temp.toString();
List<CrossProblemTotalityResult> result = crossProblemService.getCrossProblemList(crossIds,yearWeek,yearWeekAfter);
jsonViewObject.success(result);
} catch (Exception e) { } catch (Exception e) {
jsonViewObject.fail(I18nResourceBundle.getConstants("GET_FAILED_MSG")); jsonViewObject.fail(I18nResourceBundle.getConstants("GET_FAILED_MSG"));
log.error("{} getAll error", this.getClass().getSimpleName(), e); log.error("{} getAll error", this.getClass().getSimpleName(), e);
...@@ -65,7 +78,9 @@ public class CrossProblemController { ...@@ -65,7 +78,9 @@ public class CrossProblemController {
public JsonViewObject getPeakData(String crossIds,Integer year,Integer week) { public JsonViewObject getPeakData(String crossIds,Integer year,Integer week) {
JsonViewObject jsonViewObject = JsonViewObject.newInstance(); JsonViewObject jsonViewObject = JsonViewObject.newInstance();
try { try {
String yearWeek = year.toString() + week.toString();
CrossImportProblemResultResponseVO crossImportProblemResultResponseVO = crossProblemService.getCrossSeriousProblem(crossIds,yearWeek);
jsonViewObject.success(crossImportProblemResultResponseVO);
} catch (Exception e) { } catch (Exception e) {
jsonViewObject.fail(I18nResourceBundle.getConstants("GET_FAILED_MSG")); jsonViewObject.fail(I18nResourceBundle.getConstants("GET_FAILED_MSG"));
log.error("{} getAll error", this.getClass().getSimpleName(), e); log.error("{} getAll error", this.getClass().getSimpleName(), e);
......
...@@ -98,6 +98,9 @@ class AreaCrossProblemDayAnalysisResultResponse { ...@@ -98,6 +98,9 @@ class AreaCrossProblemDayAnalysisResultResponse {
@ApiModelProperty(value = "区域内路口拥堵排名",position = 27) @ApiModelProperty(value = "区域内路口拥堵排名",position = 27)
private List<AreaCrossProblemRankData> congestRankList = new ArrayList<>(); private List<AreaCrossProblemRankData> congestRankList = new ArrayList<>();
@ApiModelProperty(value = "区域内路口空放排名",position = 27)
private List<AreaCrossProblemRankData> emptyPassRankList = new ArrayList<>();
} }
......
...@@ -118,5 +118,25 @@ public class AnalysisReportCrossOptimizeDetailVO{ ...@@ -118,5 +118,25 @@ public class AnalysisReportCrossOptimizeDetailVO{
*/ */
private String dirs; private String dirs;
/*
* 事件问题数量
* */
private Integer problemCount;
/*
* 事件问题数量
* */
private Integer lastWeekOptimizeCount;
/*
* 事件问题数量
* */
private Integer lastWeekProblemCount;
/*
* 事件问题数量
* */
private Integer lastWeekOptimizeDuration;
} }
package net.wanji.opt.controllerv2.report.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ApiModel(value = "CrossProblemVO", description = "路口事情信息")
public class CrossProblemVO {
@ApiModelProperty(value = "路口id" )
private String crossId;
@ApiModelProperty(value = "路口名称" )
private String crossName;
@ApiModelProperty(value = "空放次数" )
private String evenNumber701;
@ApiModelProperty(value = "空放时长" )
private String eventTotalTime701;
@ApiModelProperty(value = "失衡次数" )
private String evenNumber702;
@ApiModelProperty(value = "失衡时长" )
private String eventTotalTime702;
@ApiModelProperty(value = "溢出次数" )
private String evenNumber703;
@ApiModelProperty(value = "溢出时长" )
private String eventTotalTime703;
@ApiModelProperty(value = "拥堵次数" )
private String evenNumber707;
@ApiModelProperty(value = "拥堵时长" )
private String eventTotalTime707;
}
package net.wanji.opt.controllerv2.report.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.ArrayList;
import java.util.List;
@Data
public class ImportCrossAnalysisResponseVO {
@ApiModelProperty(value = "路口名称", example = "经十路(舜耕路-山大路)",position = 0)
private String crossName;
@ApiModelProperty(value = "本周优化集中时段分布情况", example = "7:00~8:00,12:00~13:30,17:30~18:40",position = 1)
private String optimizeSpan;
@ApiModelProperty(value = "本周溢出优化次数", example = "10次",position = 2)
private String overFlowOptimizeCount;
@ApiModelProperty(value = "本周溢出主要发生方向", example = "北出口、南出口",position = 3)
private String overFlowDirs;
@ApiModelProperty(value = "本周拥堵优化次数", example = "10次",position = 4)
private String congestOptimizeCount;
@ApiModelProperty(value = "本周拥堵主要发生方向", example = "北出口、南出口",position = 5)
private String congestDirs;
@ApiModelProperty(value = "本周空放优化次数", example = "10次",position = 6)
private String emptyPassOptimizeCount;
@ApiModelProperty(value = "本周空放主要发生方向", example = "北出口、南出口",position = 7)
private String emptyPassDirs;
@ApiModelProperty(value = "本周失衡优化次数", example = "10次",position = 8)
private String unbalanceOptimizeCount;
@ApiModelProperty(value = "本周失衡主要发生方向", example = "北出口、南出口",position = 9)
private String unbalanceDirs;
//================================================================================================//
@ApiModelProperty(value = "本周平均通行能力", example = "7800辆/小时",position = 10)
private String avgCapacity;
@ApiModelProperty(value = "平均通行能力与上周相比情况", example = "提升",position = 11)
private String avgCapacityCompareSituation;
//================================================================================================//
@ApiModelProperty(value = "本周延误时间", example = "22",position = 12)
private String delayTime;
@ApiModelProperty(value = "延误时间与上周相比情况", example = "增加【减少】10%",position = 13)
private String delayTimeCompare;
//================================================================================================//
@ApiModelProperty(value = "本周停车次数", example = "22",position = 14)
private String avgStopTimes;
@ApiModelProperty(value = "本周停车次数与上周相比情况", example = "增加【减少】10%",position = 15)
private String avgStopTimesCompare;
//================================================================================================//
@ApiModelProperty(value = "本周最大排队长度", example = "203",position = 16)
private String maxQueueLength;
@ApiModelProperty(value = "本周最大排队长度与上周相比情况", example = "提升【降低】10%",position = 17)
private String maxQueueLengthCompare;
//================================================================================================//
@ApiModelProperty(value = "本周总体效果情况", example = "明显提升",position = 18)
private String weekTotalitySituation;
private List<ImportCrossReportAnalysisDataVO> dataList = new ArrayList<>();
}
\ No newline at end of file
package net.wanji.opt.controllerv2.report.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
public class ImportCrossReportAnalysisDataVO {
@ApiModelProperty(value = "星期", example = "星期一", position = 0)
private String weekName;
@ApiModelProperty(value = "策略优化时段", example = "7:35~8:40", position = 1)
private String optimizeTimeSpan;
@ApiModelProperty(value = "本周优化次数与问题次数比", example = "20/100", position = 2)
private String thisWeekCountRadio;
@ApiModelProperty(value = "上周优化次数与问题次数比", example = "20/100", position = 3)
private String lastWeekCountRadio;
@ApiModelProperty(value = "本周通行能力", example = "3466", position = 4)
private Integer thisWeekCapacity;
@ApiModelProperty(value = "上周通行能力", example = "5600", position = 5)
private Integer lastWeekCapacity;
@ApiModelProperty(value = "本周停车次数", example = "20", position = 6)
private Double thisWeekStopTimes;
@ApiModelProperty(value = "上周停车次数", example = "30", position = 7)
private Double lastWeekStopTimes;
@ApiModelProperty(value = "本周延误时间", example = "30.5", position = 8)
private Double thisWeekDelayTime;
@ApiModelProperty(value = "上周延误时间", example = "30.2", position = 9)
private Double lastWeekDelayTime;
@ApiModelProperty(value = "本周最大排队长度", example = "6.5", position = 10)
private Double thisWeekMaxQueueLength;
@ApiModelProperty(value = "上周最大排队长度", example = "-1.5%", position = 11)
private Double lastWeekMaxQueueLength;
}
\ No newline at end of file
package net.wanji.opt.dao.mapper.report; package net.wanji.opt.dao.mapper.report;
import net.wanji.opt.entity.judgeanalysis.AnalysisProblemCrossDay; import net.wanji.opt.controllerv2.report.vo.CrossProblemVO;
import net.wanji.opt.vo2.report.CrossImportProblemDataForQuery;
import net.wanji.opt.vo2.report.CrossImportProblemDetailVO;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import java.util.List; import java.util.List;
public interface CrossProblemMapper { public interface CrossProblemMapper {
List<CrossProblemVO> selectCrossProblem(@Param("crossIdList") List<String> crossIdList,@Param("yearWeek") String yearWeek);
List<CrossImportProblemDetailVO> selectCrossProblemSeriousDataByType(@Param("crossId") String crossId, @Param("yearWeek") String yearWeek,@Param("eventType") String eventType);
CrossImportProblemDataForQuery selectCrossProblemWorkDayByType(@Param("crossId") String crossId, @Param("yearWeek") String yearWeek, @Param("eventType") String eventType);
List<CrossImportProblemDataForQuery> selectCrossProblemByType(@Param("crossIdList") List<String> crossIdList,@Param("yearWeek") String yearWeek,@Param("eventType") String eventType);
} }
package net.wanji.opt.servicev2.report; package net.wanji.opt.servicev2.report;
import com.alibaba.fastjson.JSONObject;
import net.wanji.opt.controllerv2.report.vo.CrossRunStateAnalysisResultResponseDTO; import net.wanji.opt.controllerv2.report.vo.CrossRunStateAnalysisResultResponseDTO;
import net.wanji.opt.controllerv2.report.vo.CrossRunStatePeakResultResponseVO; import net.wanji.opt.controllerv2.report.vo.CrossRunStatePeakResultResponseVO;
import net.wanji.opt.vo2.report.CrossImportProblemResultResponseVO;
import net.wanji.opt.vo2.report.CrossProblemTotalityResult;
import net.wanji.opt.vo2.report.CrossRidLaneResult; import net.wanji.opt.vo2.report.CrossRidLaneResult;
import java.util.List; import java.util.List;
public interface CrossProblemService { public interface CrossProblemService {
List<CrossProblemTotalityResult> getCrossProblemList(String crossIds, String yearWeek , String yearWeekAfter);
CrossImportProblemResultResponseVO getCrossSeriousProblem(String crossIds, String yearWeek);
} }
...@@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSONObject; ...@@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSONObject;
import net.wanji.opt.controllerv2.report.vo.CrossOptimizeResultResponseVO; import net.wanji.opt.controllerv2.report.vo.CrossOptimizeResultResponseVO;
import net.wanji.opt.controllerv2.report.vo.CrossRunStateAnalysisResultResponseDTO; import net.wanji.opt.controllerv2.report.vo.CrossRunStateAnalysisResultResponseDTO;
import net.wanji.opt.controllerv2.report.vo.CrossRunStatePeakResultResponseVO; import net.wanji.opt.controllerv2.report.vo.CrossRunStatePeakResultResponseVO;
import net.wanji.opt.controllerv2.report.vo.ImportCrossAnalysisResponseVO;
import net.wanji.opt.vo2.report.CrossRidLaneResult; import net.wanji.opt.vo2.report.CrossRidLaneResult;
import java.util.List; import java.util.List;
...@@ -15,5 +16,7 @@ public interface CrossRidLaneService { ...@@ -15,5 +16,7 @@ public interface CrossRidLaneService {
List<CrossRunStatePeakResultResponseVO> getPeakData(String crossIds, Integer year, Integer week); List<CrossRunStatePeakResultResponseVO> getPeakData(String crossIds, Integer year, Integer week);
List<CrossOptimizeResultResponseVO> getTotalityData(Integer year, Integer week, String crossIds); CrossOptimizeResultResponseVO getTotalityData(Integer year, Integer week, String crossIds);
List<ImportCrossAnalysisResponseVO> getProblemDetail(Integer year, Integer week, String crossIds);
} }
package net.wanji.opt.vo2.report;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ApiModel(value = "CrossImportProblemDataForQuery", description = "路口事情信息")
public class CrossImportProblemDataForQuery {
@ApiModelProperty(value = "路口ID")
private String crossId ;
@ApiModelProperty(value = "路口名称")
private String crossName ;
@ApiModelProperty(value = "事件类型")
private String eventType ;
@ApiModelProperty(value = "事件次数")
private String eventNumber ;
@ApiModelProperty(value = "事件总持续时长")
private String eventTotalTime ;
@ApiModelProperty(value = "一天中最严重时段")
private String seriousTimeSpan ;
@ApiModelProperty(value = "一天中最严重时段持续时长")
private String seriousDuration ;
@ApiModelProperty(value = "时段集合")
private String timeSpanList ;
@ApiModelProperty(value = "星期【1~7】")
private String weekDay ;
@ApiModelProperty(value = "工作日事件平均数量")
private String workDayEventNumber ;
@ApiModelProperty(value = "工作日事件平均时长")
private String workDayEventTotalTime ;
}
package net.wanji.opt.vo2.report;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.ArrayList;
import java.util.List;
@Data
@ApiModel(value = "CrossImportProblemDataVO", description = "路口事情信息")
public class CrossImportProblemDataVO {
@ApiModelProperty(value = "数据类型:1溢出 2拥堵",example = "1",position = 0)
private String dataType ;
@ApiModelProperty(value = "路口名称",example = "旅游路-洪山路交叉口",position = 1)
private String crossName ;
@ApiModelProperty(value = "持续时长",example = "90",position = 2)
private String duration ;
@ApiModelProperty(value = "本周路口最严重时段",example = "7:00~7:30",position = 3)
private String seriousTimeSpan ;
@ApiModelProperty(value = "本周路口最严重时段持续时长",example = "溢出时长30分钟",position = 4)
private String seriousTimeSpanDuration ;
@ApiModelProperty(value = "工作日平均每天溢出次数",example = "3次",position = 5)
private String workDayAvgOverCount ;
@ApiModelProperty(value = "工作日平均每天溢出时长",example = "溢出时长30分钟",position = 6)
private String workDayAvgOverDuration ;
@ApiModelProperty(value = "路口每天时段详情",position = 7)
private List<CrossImportProblemDetailVO> list=new ArrayList<>();
}
package net.wanji.opt.vo2.report;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ApiModel(value = "CrossImportProblemDetailVO", description = "路口事情信息")
public class CrossImportProblemDetailVO {
@ApiModelProperty(value = "周几",example = "周一",position = 0)
private String weekName ;
@ApiModelProperty(value = "时段",example = "7:00~7:30",position = 1)
private String timeSpan ;
@ApiModelProperty(value = "时长",example = "30分钟",position = 2)
private String duration ;
}
package net.wanji.opt.vo2.report;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.ArrayList;
import java.util.List;
@Data
@ApiModel(value = "CrossImportProblemResultResponseVO", description = "路口事情信息")
public class CrossImportProblemResultResponseVO {
@ApiModelProperty(value = "溢出最严重路口", example = "旅游路-洪山路交叉口、旅游路-霞景路交叉口",position = 0)
private String overFlowCrossName;
@ApiModelProperty(value = "本周溢出时长", example = "3.5小时",position = 1)
private String overFlowDuration;
@ApiModelProperty(value = "拥堵最严重路口", example = "旅游路-洪山路交叉口、旅游路-霞景路交叉口",position = 2)
private String congestCrossName;
@ApiModelProperty(value = "本周拥堵时长", example = "3.5小时",position = 3)
private String congestDuration;
//================================================================================================//
@ApiModelProperty(value = "溢出路口排名,top10",position = 4)
private List<CrossImportProblemDataVO> overFlowList=new ArrayList<>();
@ApiModelProperty(value = "拥堵路口排名,top10",position = 5)
private List<CrossImportProblemDataVO> congestList=new ArrayList<>();
}
package net.wanji.opt.vo2.report;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ApiModel(value = "CrossProblemTotalityDataList", description = "路口事情信息")
public class CrossProblemTotalityDataList {
@ApiModelProperty(value = "数据类型:1次数 2时长",example = "1",position = 0)
private String dataType ;
@ApiModelProperty(value = "本周溢出数值【次数或时长】",example = "8900",position = 0)
private String thisWeekOverFlowNumber ;
@ApiModelProperty(value = "上周溢出数值【次数或时长】",example = "8900",position = 1)
private String lastWeekOverFlowNumber ;
@ApiModelProperty(value = "本周拥堵数值【次数或时长】",example = "8900",position = 2)
private String thisWeekCongestNumber ;
@ApiModelProperty(value = "上周拥堵数值【次数或时长】",example = "8900",position = 3)
private String lastWeekCongestNumber ;
@ApiModelProperty(value = "本周失衡数值【次数或时长】",example = "8900",position = 4)
private String thisWeekUnbalanceNumber ;
@ApiModelProperty(value = "上周失衡数值【次数或时长】",example = "8900",position = 5)
private String lastWeekUnbalanceNumber ;
@ApiModelProperty(value = "本周空放数值【次数或时长】",example = "8900",position = 6)
private String thisWeekEmptyPassNumber ;
@ApiModelProperty(value = "上周空放数值【次数或时长】",example = "8900",position = 7)
private String lastWeekEmptyPassNumber ;
}
package net.wanji.opt.vo2.report;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.ArrayList;
import java.util.List;
@Data
@ApiModel(value = "CrossProblemTotalityResult", description = "路口事情信息")
public class CrossProblemTotalityResult {
@ApiModelProperty(value = "路口名称", example = "经十路(舜耕路-山大路)",position = 0)
private String crossName;
@ApiModelProperty(value = "本周溢出总次数", example = "20次",position = 1)
private String weekOverFlowCount;
@ApiModelProperty(value = "本周溢出总次数与上周比较情况", example = "增加【减少】10%",position = 2)
private String weekOverFlowCountCompare;
@ApiModelProperty(value = "本周溢出时长", example = "3.5小时",position = 3)
private String weekOverFlowDuration;
@ApiModelProperty(value = "本周溢出时长与上周比较情况", example = "增加【减少】13%",position = 4)
private String weekOverFlowDurationCompare;
@ApiModelProperty(value = "本周拥堵总次数", example = "20次",position = 5)
private String weekCongestCount;
@ApiModelProperty(value = "本周拥堵总次数与上周比较情况", example = "增加【减少】10%",position = 6)
private String weekCongestCountCompare;
@ApiModelProperty(value = "本周拥堵时长", example = "3.5小时",position = 7)
private String weekCongestDuration;
@ApiModelProperty(value = "本周拥堵时长与上周比较情况", example = "增加【减少】13%",position = 8)
private String weekCongestDurationCompare;
//================================================================================================//
@ApiModelProperty(value = "本周总体效果情况", example = "明显提升",position = 9)
private String weekTotalitySituation;
private List<CrossProblemTotalityDataList> dataList=new ArrayList<>();
}
...@@ -3,5 +3,116 @@ ...@@ -3,5 +3,116 @@
"http://mybatis.org/dtd/mybatis-3-mapper.dtd"> "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="net.wanji.opt.dao.mapper.report.CrossProblemMapper"> <mapper namespace="net.wanji.opt.dao.mapper.report.CrossProblemMapper">
<resultMap id="CrossProblemMap" type="net.wanji.opt.controllerv2.report.vo.CrossProblemVO">
<result column="cross_id" property="crossId"/>
<result column="name" property="crossName"/>
<result column="even_number_701" property="evenNumber701"/>
<result column="event_total_time_701" property="eventTotalTime701"/>
<result column="even_number_702" property="evenNumber702"/>
<result column="event_total_time_702" property="eventTotalTime702"/>
<result column="even_number_703" property="evenNumber703"/>
<result column="event_total_time_703" property="eventTotalTime703"/>
<result column="even_number_707" property="evenNumber707"/>
<result column="event_total_time_707" property="eventTotalTime707"/>
</resultMap>
<resultMap id="CrossProblemQueryMap" type="net.wanji.opt.vo2.report.CrossImportProblemDataForQuery">
<result column="cross_id" property="crossId"/>
<result column="name" property="crossName"/>
<result column="event_type" property="eventType"/>
<result column="event_number" property="eventNumber"/>
<result column="event_total_time" property="eventTotalTime"/>
<result column="serious_time_span" property="seriousTimeSpan"/>
<result column="serious_duration" property="seriousDuration"/>
<result column="time_span_list" property="timeSpanList"/>
<result column="week_day" property="weekDay"/>
<result column="workDayEventNumber" property="workDayEventNumber"/>
<result column="workDayEventTotalTime" property="workDayEventTotalTime"/>
</resultMap>
<select id="selectCrossProblem" resultMap="CrossProblemMap">
select t4.cross_id, t4.name, sum(even_number_701) as even_number_701, sum(event_total_time_701) as event_total_time_701,
sum(even_number_702) as even_number_702, sum(event_total_time_702) as event_total_time_702,
sum(even_number_703) as even_number_703, sum(event_total_time_703) as event_total_time_703,
sum(even_number_707) as even_number_707, sum(event_total_time_707) as event_total_time_707
from
(select t3.cross_id, t3.name, case t3.event_type when 701 then t3.event_number else 0 end as even_number_701 ,
case t3.event_type when 701 then t3.event_total_time else 0 end as event_total_time_701,
case t3.event_type when 702 then t3.event_number else 0 end as even_number_702 ,
case t3.event_type when 702 then t3.event_total_time else 0 end as event_total_time_702,
case t3.event_type when 703 then t3.event_number else 0 end as even_number_703 ,
case t3.event_type when 703 then t3.event_total_time else 0 end as event_total_time_703,
case t3.event_type when 707 then t3.event_number else 0 end as even_number_707 ,
case t3.event_type when 707 then t3.event_total_time else 0 end as event_total_time_707
from
(select t5.cross_id, t5.name,t5.event_type,sum(t5.event_number) as event_number, sum(t5.event_total_time) as event_total_time
from
(select t.id as cross_id, t.name,IFNULL(t1.event_type,701) as event_type,IFNULL(t1.event_number,0) as event_number , IFNULL(t1.event_total_time,0) as event_total_time
from t_base_cross_info t
left join (select cross_id,event_type,event_number,event_total_time from t_analysis_problem_cross_day where 1=1
<if test="yearWeek != null">
and year_week = #{yearWeek}
</if>
) t1 on t1.cross_id = t.id
where t.is_signal = 1
order by t.id, t.name,t1.event_type) t5
group by t5.cross_id, t5.name,t5.event_type) t3) t4
where 1=1
<if test="crossIdList != null">
and t4.cross_id in
<foreach collection="crossIdList" item="crossId" open="(" close=")" separator=",">
#{crossId}
</foreach>
</if>
group by t4.cross_id,t4.name
</select>
<select id="selectCrossProblemByType" parameterType="String" resultMap="CrossProblemQueryMap">
select t.cross_id,t1.name,t.event_type,sum(t.event_number) as event_number , ROUND(sum(t.event_total_time) / 60 ,1) as event_total_time
from t_analysis_problem_cross_day t
left join t_base_cross_info t1 on t.cross_id = t1.id
where 1=1
and year_week = #{yearWeek} and event_type = #{eventType}
<if test="crossIdList != null">
and t.cross_id in
<foreach collection="crossIdList" item="crossId" open="(" close=")" separator=",">
#{crossId}
</foreach>
</if>
GROUP BY t.cross_id,t1.name,t.event_type
order by event_total_time desc limit 10
</select>
<select id="selectCrossProblemWorkDayByType" parameterType="String" resultMap="CrossProblemQueryMap">
select t.cross_id,t1.name,t.event_type,ROUND(sum(t.event_total_time) / 60 ,1) as event_total_time,ROUND(f.serious_duration/60 ,1) as serious_duration,
f.serious_time_span, g.event_number as workDayEventNumber ,g.event_total_time as workDayEventTotalTime
from t_analysis_problem_cross_day t
left join t_base_cross_info t1 on t.cross_id = t1.id
left join (select t.cross_id, max(t.serious_duration) as serious_duration , t.serious_time_span
from t_analysis_problem_cross_day t
where 1=1
and t.year_week = #{yearWeek} and t.event_type = #{eventType}
and t.cross_id = #{crossId} ) f on t.cross_id = f.cross_id
left join (select t.cross_id, AVG(t.event_number) as event_number , AVG(t.event_total_time) as event_total_time
from t_analysis_problem_cross_day t
where 1=1
and t.year_week = #{yearWeek} and t.event_type = #{eventType}
and t.cross_id = #{crossId}
and week_day <![CDATA[ < ]]> 6
) g on g.cross_id = t.cross_id
where 1=1
and t.year_week = #{yearWeek} and t.event_type = #{eventType}
and t.cross_id = #{crossId}
</select>
<select id="selectCrossProblemSeriousDataByType" parameterType="String" resultType="net.wanji.opt.vo2.report.CrossImportProblemDetailVO">
select case t.week_day when 1 then '周一' when 2 then '周二' when 3 then '周三' when 4 then '周四' when 5 then '周五' when 6 then '周六' when 7 then '周日' end as weekName,
t.serious_time_span as timeSpan , ROUND(t.serious_duration / 60 ,1) as duration
from t_analysis_problem_cross_day t
where 1=1
and t.year_week = #{yearWeek} and t.event_type = #{eventType}
and t.cross_id = #{crossId}
</select>
</mapper> </mapper>
\ No newline at end of file
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