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

Merge remote-tracking branch 'origin/traffic-signal-platform-国产化' into traffic-signal-platform-国产化

# Conflicts:
#	signal-optimize-data-compute/src/main/resources/mapper/comprehensivequery/ComprehensiveQueryMapper.xml
#	signal-optimize-data-compute/src/main/resources/mapper/evaluation/EventInfoMapper.xml
parents 0a255002 5d12cb3c
......@@ -101,6 +101,19 @@
<!-- 依赖声明 -->
<dependencyManagement>
<dependencies>
<!-- 瀚高数据库-->
<dependency>
<groupId>com.highgo</groupId>
<artifactId>HgdbJdbc</artifactId>
<version>6.2.2</version>
</dependency>
<!-- 中创中间件inforsuite-->
<dependency>
<groupId>com.cvicse.embedded</groupId>
<artifactId>spring-boot-starter-inforsuite</artifactId>
<version>10.0.2.5</version>
</dependency>
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>okhttp</artifactId>
......@@ -111,6 +124,12 @@
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-spring-boot-starter</artifactId>
<version>2.0.4</version>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- ElasticSearch依赖 -->
<dependency>
......
......@@ -59,6 +59,12 @@
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-websocket</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
......@@ -71,6 +77,12 @@
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
......@@ -90,6 +102,12 @@
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
......@@ -169,6 +187,10 @@
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
<exclusion>
<groupId>com.vaadin.external.google</groupId>
<artifactId>android-json</artifactId>
......@@ -181,6 +203,10 @@
<version>4.13.2</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.cvicse.embedded</groupId>
<artifactId>spring-boot-starter-inforsuite</artifactId>
</dependency>
</dependencies>
<build>
......@@ -216,14 +242,14 @@
<verbose>true</verbose>
<overwrite>true</overwrite>
</configuration>
<dependencies>
<!-- 数据库驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql.connector.version}</version>
</dependency>
</dependencies>
<!-- <dependencies>-->
<!-- &lt;!&ndash; 数据库驱动 &ndash;&gt;-->
<!-- <dependency>-->
<!-- <groupId>mysql</groupId>-->
<!-- <artifactId>mysql-connector-java</artifactId>-->
<!-- <version>${mysql.connector.version}</version>-->
<!-- </dependency>-->
<!-- </dependencies>-->
</plugin>
<!-- swagger 导出配置 -->
......
package net.wanji.opt.common.exception;
import com.cvicse.bixi.connector.ClientAbortException;
import lombok.extern.slf4j.Slf4j;
import net.wanji.common.framework.exceptionhandler.GlobalExceptionHandler;
import net.wanji.common.framework.rest.JsonViewObject;
import org.apache.catalina.connector.ClientAbortException;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseStatus;
......
......@@ -2,10 +2,7 @@ package net.wanji.opt.servicev2.syslog.impl;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import net.wanji.opt.dao.mapper.judgeanalysis.AnalysisProblemCrossDayMapper;
import net.wanji.opt.dao.mapper.syslog.SysLogMapper;
import net.wanji.opt.entity.comprehensivequery.CrossLaneDataHistPoExtendName;
import net.wanji.opt.entity.judgeanalysis.AnalysisProblemCrossDay;
import net.wanji.opt.entity.syslog.SysOptimizeLog;
import net.wanji.opt.servicev2.syslog.SysLogServer;
import org.apache.commons.collections.CollectionUtils;
......@@ -30,10 +27,10 @@ public class SysLogServerImpl extends ServiceImpl<SysLogMapper, SysOptimizeLog>
private SysLogMapper sysLogMapper;
@Override
public JSONObject findSysOptimizeLog(String crossId,String startTime,String endTime,Integer pageNum,Integer pageSize) {
List<SysOptimizeLog> list = sysLogMapper.findSysOptimizeLog(crossId,startTime,endTime);
List<SysOptimizeLog> results = new ArrayList<>();
for(SysOptimizeLog temp : list){
public JSONObject findSysOptimizeLog(String crossId, String startTime, String endTime, Integer pageNum, Integer pageSize) {
List<SysOptimizeLog> list = sysLogMapper.findSysOptimizeLog(crossId, startTime, endTime);
List<SysOptimizeLog> results = new ArrayList<>();
for (SysOptimizeLog temp : list) {
switch (temp.getCommandType()) {
case "1":
JSONObject temp1 = JSONObject.parseObject(temp.getDataInfo());
......@@ -61,7 +58,7 @@ public class SysLogServerImpl extends ServiceImpl<SysLogMapper, SysOptimizeLog>
JSONObject temp3 = JSONObject.parseObject(temp.getDataInfo());
Integer commandType = temp3.getInteger("commandType");
switch (commandType) {
//1-步进控制/恢复(公用);2-恢复时间表(公用);3-相位锁定/解锁(公用);4-临时方案下发(公用);5-定时任务恢复失败;10-查询环图失败记录',
//1-步进控制/恢复(公用);2-恢复时间表(公用);3-相位锁定/解锁(公用);4-临时方案下发(公用);5-定时任务恢复失败;10-查询环图失败记录',
case 1:
temp.setCommandType("定时任务 - 解除步进控制");
break;
......@@ -85,14 +82,14 @@ public class SysLogServerImpl extends ServiceImpl<SysLogMapper, SysOptimizeLog>
results.add(temp);
}
List<SysOptimizeLog> collect = new ArrayList<>();
if(CollectionUtils.isNotEmpty(results)){
if (CollectionUtils.isNotEmpty(results)) {
collect = results.stream().skip((pageNum - 1) * pageSize).limit(pageSize).collect(Collectors.toList());
}
JSONObject result = new JSONObject();
result.put("fullDataList",results);
result.put("pageList",collect);
result.put("totalPage",Math.ceil((double) results.size() / pageSize));
result.put("totalSize",results.size());
result.put("fullDataList", results);
result.put("pageList", collect);
result.put("totalPage", Math.ceil((double) results.size() / pageSize));
result.put("totalSize", results.size());
return result;
}
}
......@@ -131,7 +131,7 @@
<include refid="fuzzySearch"/>
</where>
<!--ORDER BY `dt_create_date` DESC-->
limit #{pageSize} OFFSET #{startRowNum} - 1
limit #{startRowNum}, #{pageSize}
</select>
<!--更新-->
......
......@@ -16,7 +16,7 @@
FROM
(
SELECT t1.cross_id,t1.event_serial_number,t1.type,
extract(epoch from (t1.end_time - t1.start_time)) duration,
TIMESTAMPDIFF(SECOND,t1.start_time,t1.end_time) duration,
t2.event_id
from t_event_info t1
left JOIN
......@@ -26,7 +26,7 @@
AND t2.cross_id=#{crossId}
</if>
<if test="startTime!=null and endTime!=null">
AND t2.issue_time>= TO_TIMESTAMP(#{startTime},'YYYY-MM-DD HH24:MI:SS') and t2.issue_time &lt;=TO_TIMESTAMP(#{endTime},'YYYY-MM-DD HH24:MI:SS')
AND t2.issue_time>=#{startTime} and t2.issue_time &lt;=#{endTime}
</if>
<if test="currentAlgo!=null and currentAlgo!=''">
AND t2.current_algo=#{currentAlgo}
......@@ -36,7 +36,7 @@
AND t1.cross_id=#{crossId}
</if>
<if test="startTime!=null and endTime!=null">
AND t1.start_time>=TO_TIMESTAMP(#{startTime},'YYYY-MM-DD HH24:MI:SS') and t1.start_time &lt;=TO_TIMESTAMP(#{endTime},'YYYY-MM-DD HH24:MI:SS')
AND t1.start_time>=#{startTime} and t1.start_time &lt;=#{endTime}
</if>
<if test="evenType!=null and evenType!='' ">
AND t1.type=#{evenType}
......@@ -51,8 +51,7 @@
FROM
(
SELECT t1.cross_id,t1.event_serial_number,
t1.type,
extract(epoch from (t1.end_time - t1.start_time)) duration,
t1.type,TIMESTAMPDIFF(SECOND,t1.start_time,t1.end_time) duration,
t2.event_id
from t_event_info t1
left JOIN
......@@ -62,7 +61,7 @@
AND t2.cross_id=#{crossId}
</if>
<if test="contrastStartTime!=null and constrastEndTime!=null">
AND t2.issue_time>= TO_TIMESTAMP(#{contrastStartTime},'YYYY-MM-DD HH24:MI:SS') and t2.issue_time &lt;=TO_TIMESTAMP(#{constrastEndTime},'YYYY-MM-DD HH24:MI:SS')
AND t2.issue_time>=#{contrastStartTime} and t2.issue_time &lt;=#{constrastEndTime}
</if>
<if test="currentAlgo!=null">
AND t2.current_algo=#{currentAlgo}
......@@ -73,7 +72,7 @@
AND t1.cross_id=#{crossId}
</if>
<if test="contrastStartTime!=null and constrastEndTime!=null">
AND t1.start_time>=TO_TIMESTAMP(#{contrastStartTime},'YYYY-MM-DD HH24:MI:SS') and t1.start_time &lt;=TO_TIMESTAMP(#{constrastEndTime},'YYYY-MM-DD HH24:MI:SS')
AND t1.start_time>=#{contrastStartTime} and t1.start_time &lt;=#{constrastEndTime}
</if>
<if test="evenType!=null">
AND t1.type=#{evenType}
......
......@@ -7,8 +7,8 @@
FROM t_event_optimize_info
WHERE 1=1
<if test="startTime != null and endTime != null">
AND happen_start_time >= TO_TIMESTAMP(#{startTime},'YYYY-MM-DD HH24:MI:SS')
AND happen_start_time &lt;= TO_TIMESTAMP(#{endTime},'YYYY-MM-DD HH24:MI:SS')
AND happen_start_time >= #{startTime}
AND happen_start_time &lt;= #{endTime}
</if>
<if test="crossId != null">
AND cross_id = #{crossId}
......@@ -39,8 +39,8 @@
<select id="selectPageWithCrossIdAndGreenId" parameterType="map" resultType="net.wanji.opt.entity.eventoptimize.TEventOptimizeInfo">
SELECT *
FROM t_event_optimize_info
WHERE (#{startTime} IS NULL OR happen_start_time >= TO_TIMESTAMP(#{startTime},'YYYY-MM-DD HH24:MI:SS'))
AND (#{endTime} IS NULL OR happen_end_time &lt;= TO_TIMESTAMP(#{endTime},'YYYY-MM-DD HH24:MI:SS'))
WHERE (#{startTime} IS NULL OR happen_start_time >= #{startTime})
AND (#{endTime} IS NULL OR happen_end_time &lt;= #{endTime})
AND (#{crossId} IS NULL OR cross_id = #{crossId})
AND (#{greenId} IS NULL OR green_id = #{greenId})
AND opt_status != 0
......@@ -49,7 +49,7 @@
<select id="getCrossOptimizeDistribute" parameterType="map" resultType="java.util.Map">
SELECT
(CASE
WHEN #{groupType} = 4 THEN T0_CHAR(unit_time, 'YYYY-MM-DD') -- 按天粒度格式化为 yyyy-MM-dd
WHEN #{groupType} = 4 THEN DATE_FORMAT(unit_time, '%Y-%m-%d') -- 按天粒度格式化为 yyyy-MM-dd
ELSE unit_time -- 其他粒度格式化为 HH:mm
END) AS time_label,
event_type,
......@@ -58,11 +58,11 @@
FROM (
SELECT
(CASE
WHEN #{groupType} = 0 THEN TO_CHAR(CONCAT(TO_CHAR(happen_start_time,'YYYY-MM-DD'), ' ', TO_CHAR(happen_start_time,'HH24'), ':', FLOOR(EXTRACT(MINUTE FROM happen_start_time) / 5) * 5), 'YYYY-MM-DD HH24:MI:00')
WHEN #{groupType} = 1 THEN TO_CHAR(CONCAT(TO_CHAR(happen_start_time,'YYYY-MM-DD'), ' ', TO_CHAR(happen_start_time,'HH24'), ':', FLOOR(EXTRACT(MINUTE FROM happen_start_time) / 15) * 15), 'YYYY-MM-DD HH24:MI:00')
WHEN #{groupType} = 2 THEN TO_CHAR(CONCAT(TO_CHAR(happen_start_time,'YYYY-MM-DD'), ' ', TO_CHAR(happen_start_time,'HH24'), ':', FLOOR(EXTRACT(MINUTE FROM happen_start_time) / 30) * 30), 'YYYY-MM-DD HH24:MI:00')
WHEN #{groupType} = 3 THEN TO_CHAR(happen_start_time, 'YYYY-MM-DD HH24:00:00')
WHEN #{groupType} = 4 THEN TO_CHAR(happen_start_time, 'YYYY-MM-DD 00:00:00')
WHEN #{groupType} = 0 THEN DATE_FORMAT(CONCAT(DATE(happen_start_time), ' ', HOUR(happen_start_time), ':', FLOOR(MINUTE(happen_start_time) / 5) * 5), '%Y-%m-%d %H:%i:00')
WHEN #{groupType} = 1 THEN DATE_FORMAT(CONCAT(DATE(happen_start_time), ' ', HOUR(happen_start_time), ':', FLOOR(MINUTE(happen_start_time) / 15) * 15), '%Y-%m-%d %H:%i:00')
WHEN #{groupType} = 2 THEN DATE_FORMAT(CONCAT(DATE(happen_start_time), ' ', HOUR(happen_start_time), ':', FLOOR(MINUTE(happen_start_time) / 30) * 30), '%Y-%m-%d %H:%i:00')
WHEN #{groupType} = 3 THEN DATE_FORMAT(happen_start_time, '%Y-%m-%d %H:00:00')
WHEN #{groupType} = 4 THEN DATE_FORMAT(happen_start_time, '%Y-%m-%d 00:00:00')
END) AS unit_time,
event_type,
COUNT(*) AS total_count,
......@@ -76,8 +76,8 @@
AND green_id = #{greenId}
</if>
<if test="startTime != null and endTime != null">
AND happen_start_time >= TO_TIMESTAMP(#{startTime},'YYYY-MM-DD HH24:MI:SS'))
AND happen_start_time &lt; TO_TIMESTAMP(#{endTime},'YYYY-MM-DD HH24:MI:SS'))
AND happen_start_time >= #{startTime}
AND happen_start_time &lt; #{endTime}
</if>
GROUP BY unit_time, event_type
) t
......@@ -94,8 +94,8 @@
JOIN t_config_event_category t2 ON t1.event_type=t2.event_type
WHERE 1=1
<if test="startTime != null and endTime != null">
AND happen_start_time >= TO_TIMESTAMP(#{startTime},'YYYY-MM-DD HH24:MI:SS'))
AND happen_start_time &lt;= TO_TIMESTAMP(#{endTime},'YYYY-MM-DD HH24:MI:SS'))
AND happen_start_time >= #{startTime}
AND happen_start_time &lt;= #{endTime}
</if>
<if test="greenId != null and greenId != ''">
AND green_id = #{greenId}
......
/**
*
*/
import cn.hutool.core.date.DateField;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import lombok.extern.slf4j.Slf4j;
import net.wanji.opt.SignalOptimizeApplication;
import net.wanji.opt.dao.mapper.judgeanalysis.AnalysisProblemCrossDayMapper;
import net.wanji.opt.servicev2.evaluation.EventInfoService;
import org.junit.FixMethodOrder;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.MethodSorters;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import javax.annotation.Resource;
import java.text.ParseException;
import java.util.Date;
/**
* @author fengyi
* @date
*/
@RunWith(SpringRunner.class)
@SpringBootTest(classes = SignalOptimizeApplication.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
@Slf4j
public class AnalysisProblemDayTaskTest {
@Autowired
private AnalysisProblemCrossDayMapper analysisProblemCrossDayMapper;
@Resource
EventInfoService eventInfoService;
@Test
public void testProducerTrack() {
long st = System.currentTimeMillis();
DateTime startTDateTime = DateUtil.beginOfDay(new Date());
DateTime endTDateTime = DateUtil.date(); //DateUtil.offsetHour(startTDateTime,1);
while (startTDateTime.isBefore(endTDateTime)) {
String sdt = startTDateTime.toString("yyyy-MM-dd HH:00:00");
startTDateTime = DateUtil.offsetHour(startTDateTime, 1);
startTDateTime = DateUtil.offsetSecond(startTDateTime, -1);
String edt = startTDateTime.toString("yyyy-MM-dd HH:mm:ss");
analysisProblemCrossDayMapper.insertGreenCrossHourData(sdt, edt);
startTDateTime = DateUtil.offsetSecond(startTDateTime, 1);
log.info("小时粒度数据入库,小时开始时间:{},小时截止时间:{},截止时间:{}", sdt, edt, endTDateTime.toString("yyyy-MM-dd HH:mm:ss"));
}
long et = System.currentTimeMillis();
System.out.println((et - st) + "ms");
}
@Test
public void insertCrossSlowRunEventData() throws ParseException {
try {
for (int i = 28; i > 0; i--) {
DateTime endTDateTime = DateUtil.date();
//开始时间
DateTime startTDateTime = DateUtil.offsetDay(endTDateTime, -i);
startTDateTime = DateUtil.beginOfDay(startTDateTime);
String sdt = startTDateTime.toString("yyyy-MM-dd HH:00:00");
//窗口截止时间
endTDateTime = DateUtil.parseDateTime(sdt).offset(DateField.HOUR, 24).offset(DateField.SECOND, -1);
String edt = endTDateTime.toString("yyyy-MM-dd HH:mm:ss");
eventInfoService.insertCrossSlowRunEventData(sdt, edt);
}
} catch (Exception e) {
log.error("", e);
}
}
@Test
public void insertCrossSlowRunDayData() throws ParseException {
try {
//路口缓行事件数据单独计算
DateTime yesterday = DateUtil.yesterday();
String dt = yesterday.toString("yyyyMMdd");
for (int i = 20250401; i < 20250428; i++) {
long st = System.currentTimeMillis();
analysisProblemCrossDayMapper.insertAnalysisCrossSlowRunDay(i);
long et = System.currentTimeMillis();
log.info("路口缓行按天统计:耗时{}ms,dt={}", et-st,i);
}
} catch (Exception e) {
log.error("", e);
}
}
}
/**
*
*/
package zsg;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import net.wanji.opt.SignalOptimizeApplication;
import net.wanji.opt.common.EsDateIndexUtil;
import net.wanji.opt.servicev2.judgeanalysis.AnalysisProblemCrossDayService;
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.LineIterator;
import org.junit.FixMethodOrder;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.MethodSorters;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import javax.annotation.Resource;
import java.io.File;
import java.util.Date;
import java.util.List;
import java.util.concurrent.TimeUnit;
/**
* @author fengyi
* @date
*/
@RunWith(SpringRunner.class)
@SpringBootTest(classes = SignalOptimizeApplication.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
public class AreaCrossTest {
@Resource
AnalysisProblemCrossDayService analysisProblemCrossDayService;
@Test
public void testProducerTrack() {
analysisProblemCrossDayService.updateCrossAreaIdByCondition();
}
}
/**
*
*/
import cn.hutool.core.date.DateUtil;
import net.wanji.opt.SignalOptimizeApplication;
import net.wanji.opt.dao.mapper.judgeanalysis.AnalysisProblemCrossDayMapper;
import net.wanji.opt.servicev2.judgeanalysis.AnalysisProblemAndStrategyDayService;
import org.junit.FixMethodOrder;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.MethodSorters;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.test.context.junit4.SpringRunner;
import java.util.Date;
/**
* @author fengyi
* @date
*/
@RunWith(SpringRunner.class)
@SpringBootTest(classes = SignalOptimizeApplication.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
public class EventOptimizeTaskTest {
@Autowired
private AnalysisProblemAndStrategyDayService analysisProblemAndStrategyDayService;
@Test
public void taskGreen() {
try {
//analysisProblemAndStrategyDayService.selectCountByTypeOfCross();
Integer dtStart = 20250423;// Integer.valueOf(DateUtil.beginOfMonth(new Date()).toString("yyyyMMdd"));
Integer dtEnd = 20250423;// Integer.valueOf(DateUtil.format(new Date(),"yyyyMMdd"));
analysisProblemAndStrategyDayService.selectCountByTypeOfGreen(dtStart,dtEnd);
} catch (Exception e) {
e.printStackTrace();
}
}
@Test
public void taskCross() {
try {
Integer dtStart = 20250423;// Integer.valueOf(DateUtil.beginOfMonth(new Date()).toString("yyyyMMdd"));
Integer dtEnd = 20250423; //Integer.valueOf(DateUtil.format(new Date(),"yyyyMMdd"));
analysisProblemAndStrategyDayService.selectCountByTypeOfCross(dtStart,dtEnd);
} catch (Exception e) {
e.printStackTrace();
}
}
}
/**
*
*/
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import net.wanji.opt.SignalOptimizeApplication;
import net.wanji.opt.task.ReportGreenAndCrossOptimizeStatisticTask;
import org.junit.FixMethodOrder;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.MethodSorters;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import javax.annotation.Resource;
/**
* @author fengyi
* @date
*/
@RunWith(SpringRunner.class)
@SpringBootTest(classes = SignalOptimizeApplication.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
public class OptimizeStatisticTaskTest {
@Resource
ReportGreenAndCrossOptimizeStatisticTask optimizeStatisticTask;
@Test
public void testProducerTrack() {
DateTime dateTime = DateUtil.lastWeek();
dateTime = DateUtil.beginOfWeek(dateTime.toJdkDate());
String start = dateTime.toString("yyyy-MM-dd HH:mm:ss");
String end = DateUtil.now();
//测试运行上周一到现在的数据
optimizeStatisticTask.optimizeDurationCal();
}
}
spring:
cloud:
nacos:
config:
server-addr: 37.12.182.29:8848
file-extension: yaml
group: signal
namespace: signal
username: nacos
password: nacos
application:
# dubbo启动需要程序名称
name: signal-optimize-data-compute
main:
allow-circular-references: true
spring:
profiles:
active: test
logging:
level:
org.apache.ibatis: DEBUG
\ No newline at end of file
......@@ -18,6 +18,18 @@
</properties>
<dependencies>
<!-- 瀚高数据库-->
<dependency>
<groupId>com.highgo</groupId>
<artifactId>HgdbJdbc</artifactId>
</dependency>
<!-- 中创中间件inforsuite-->
<dependency>
<groupId>com.cvicse.embedded</groupId>
<artifactId>spring-boot-starter-inforsuite</artifactId>
</dependency>
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>okhttp</artifactId>
......@@ -59,6 +71,12 @@
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-websocket</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
......@@ -71,6 +89,12 @@
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
......@@ -216,14 +240,14 @@
<verbose>true</verbose>
<overwrite>true</overwrite>
</configuration>
<dependencies>
<!-- 数据库驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql.connector.version}</version>
</dependency>
</dependencies>
<!-- <dependencies>-->
<!-- &lt;!&ndash; 数据库驱动 &ndash;&gt;-->
<!-- <dependency>-->
<!-- <groupId>mysql</groupId>-->
<!-- <artifactId>mysql-connector-java</artifactId>-->
<!-- <version>${mysql.connector.version}</version>-->
<!-- </dependency>-->
<!-- </dependencies>-->
</plugin>
<!-- swagger 导出配置 -->
......
......@@ -3,10 +3,7 @@ package net.wanji.opt.common.exception;
import lombok.extern.slf4j.Slf4j;
import net.wanji.common.framework.exceptionhandler.GlobalExceptionHandler;
import net.wanji.common.framework.rest.JsonViewObject;
import org.apache.catalina.connector.ClientAbortException;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseStatus;
import org.springframework.web.bind.annotation.RestControllerAdvice;
/**
......@@ -30,11 +27,4 @@ public class OptExceptionHandler extends GlobalExceptionHandler {
public JsonViewObject OptServiceExceptionHandler(OptServiceException e) {
return JsonViewObject.newInstance().fail(e.getMessage(), "optService服务调用异常");
}
@ExceptionHandler(value = ClientAbortException.class)
@ResponseStatus(HttpStatus.OK)
public JsonViewObject clientExceptionHandler(ClientAbortException ex) {
log.error("ClientAbortException异常opt:{}", ex);
return JsonViewObject.newInstance().success("");
}
}
\ No newline at end of file
......@@ -2,14 +2,16 @@ spring:
cloud:
nacos:
config:
server-addr: 173.17.0.1:8848
server-addr: 37.8.219.227:28848
file-extension: yaml
group: signal
namespace: signal
username: nacos
password: nacos
password: Nacos@2025
application:
# dubbo启动需要程序名称
name: signal-optimize-service
main:
allow-circular-references: true
inforsuite:
license-path: D:\license
......@@ -29,14 +29,15 @@
</resultMap>
<sql id="Base_Column_List">
id, cross_id, scheme_id, dir_type, turn_type, offset, ring_no, phase_no, phase_order_id, ori_green_time,
id
, cross_id, scheme_id, dir_type, turn_type, offset, ring_no, phase_no, phase_order_id, ori_green_time,
opt_time, opt_type, opt_reason, start_time, end_time, is_relation, relation_cross_id, opt_result, opt_result_desc,
data_batch_time, restore_result, data_extend
</sql>
<select id="selectByCrossId" parameterType="String" resultMap="BaseResultMap">
select
<include refid="Base_Column_List"/>
<include refid="Base_Column_List"/>
from t_base_cross_scheme_opt_log
<where>
<if test="crossId != null and crossId != ''">
......@@ -50,7 +51,7 @@
<include refid="Base_Column_List"/>
from t_base_cross_scheme_opt_log
where cross_id = #{crossId}
and data_batch_time=(SELECT MAX(ABS(data_batch_time)) FROM t_base_cross_scheme_opt_log WHERE cross_id = #{crossId});
and data_batch_time=(SELECT MAX(ABS(data_batch_time)) FROM t_base_cross_scheme_opt_log WHERE cross_id = #{crossId});
</select>
<select id="selectOptStartEntity" resultType="net.wanji.opt.po.base.CrossSchemeOptLogPO">
......@@ -72,10 +73,10 @@
<insert id="insertOne" parameterType="net.wanji.opt.po.base.CrossSchemeOptLogPO">
insert into t_base_cross_scheme_opt_log (cross_id, scheme_id, dir_type, turn_type, offset, ring_no, phase_no,
phase_order_id, ori_green_time, opt_time, opt_type, opt_reason,
start_time,
end_time, is_relation, relation_cross_id, opt_result, opt_result_desc,
data_batch_time, restore_result, data_extend)
phase_order_id, ori_green_time, opt_time, opt_type, opt_reason,
start_time,
end_time, is_relation, relation_cross_id, opt_result, opt_result_desc,
data_batch_time, restore_result, data_extend)
values (#{crossId}, #{schemeId}, #{dirType}, #{turnType}, #{offset}, #{ringNo}, #{phaseNo}, #{phaseOrderId},
#{oriGreenTime}, #{optTime}, #{optType}, #{optReason}, #{startTime}, #{endTime}, #{relationFlag},
#{relationCrossId}, #{optResult}, #{optResultDesc}, #{dataBatchTime}, #{restoreResult}, #{dataExtend})
......@@ -83,16 +84,19 @@
<insert id="insertBatch" parameterType="net.wanji.opt.po.base.CrossSchemeOptLogPO">
insert into t_base_cross_scheme_opt_log
(cross_id, scheme_id, dir_type, turn_type, offset, ring_no, phase_no,
phase_order_id, ori_green_time, opt_time, opt_type, opt_reason,
start_time, end_time, is_relation, relation_cross_id, opt_result, opt_result_desc,
data_batch_time, restore_result, data_extend)
(cross_id, scheme_id, dir_type, turn_type, offset, ring_no, phase_no,
phase_order_id, ori_green_time, opt_time, opt_type, opt_reason,
start_time, end_time, is_relation, relation_cross_id, opt_result, opt_result_desc,
data_batch_time, restore_result, data_extend)
values
<foreach collection="list" item="entity" separator=",">
(#{entity.crossId}, #{entity.schemeId}, #{entity.dirType}, #{entity.turnType}, #{entity.offset}, #{entity.ringNo}, #{entity.phaseNo}, #{entity.phaseOrderId},
#{entity.oriGreenTime}, #{entity.optTime}, #{entity.optType}, #{entity.optReason}, #{entity.startTime}, #{entity.endTime}, #{entity.relationFlag},
#{entity.relationCrossId}, #{entity.optResult}, #{entity.optResultDesc}, #{entity.dataBatchTime}, #{entity.restoreResult}, #{entity.dataExtend})
</foreach>
<foreach collection="list" item="entity" separator=",">
(#{entity.crossId}, #{entity.schemeId}, #{entity.dirType}, #{entity.turnType}, #{entity.offset},
#{entity.ringNo}, #{entity.phaseNo}, #{entity.phaseOrderId},
#{entity.oriGreenTime}, #{entity.optTime}, #{entity.optType}, #{entity.optReason}, #{entity.startTime},
#{entity.endTime}, #{entity.relationFlag},
#{entity.relationCrossId}, #{entity.optResult}, #{entity.optResultDesc}, #{entity.dataBatchTime},
#{entity.restoreResult}, #{entity.dataExtend})
</foreach>
</insert>
</mapper>
\ No newline at end of file
......@@ -8,7 +8,7 @@
t2.traffic_index as trafficIndex, t1.wkt, t2.trval_time as travelTime, t2.speed
from t_greenwave_info t1
left join t_greenwave_realtime t2 on t1.id = t2.green_id
and t2.start_time > curdate()
and t2.start_time > current_date
</select>
</mapper>
\ No newline at end of file
......@@ -4,64 +4,127 @@
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="net.wanji.opt.dao.mapper.StrategyGreenOptHistMapper">
<!-- <select id="selectByGreenId" resultType="net.wanji.opt.po.StrategyGreenOptHistEntity" parameterType="String">-->
<!-- select *-->
<!-- from t_strategy_green_opt_hist a-->
<!-- inner join (-->
<!-- &#45;&#45; 先查询出最后一条数据的时间-->
<!-- select `green_id`, MAX(`control_time`) control_time from t_strategy_green_opt_hist group by `green_id`-->
<!-- ) b on a.`green_id` = b.`green_id` and a.`control_time` = b.`control_time`-->
<!-- and a.`green_id` = #{greenId} and a.`control_method` = 1-->
<!-- and TIMESTAMPDIFF(SECOND,a.`control_time`, now()) &lt; a.`control_duration`-->
<!-- </select>-->
<select id="selectByGreenId" resultType="net.wanji.opt.po.StrategyGreenOptHistEntity" parameterType="String">
select *
from t_strategy_green_opt_hist a
inner join (
-- 先查询出最后一条数据的时间
select `green_id`, MAX(`control_time`) control_time from t_strategy_green_opt_hist group by `green_id`
) b on a.`green_id` = b.`green_id` and a.`control_time` = b.`control_time`
and a.`green_id` = #{greenId} and a.`control_method` = 1
and TIMESTAMPDIFF(SECOND,a.`control_time`, now()) &lt; a.`control_duration`
SELECT *
FROM t_strategy_green_opt_hist a
INNER JOIN (
SELECT green_id, MAX(control_time) control_time
FROM t_strategy_green_opt_hist
GROUP BY green_id
) b ON a.green_id = b.green_id AND a.control_time = b.control_time
WHERE a.green_id = #{greenId}
AND a.control_method = 1
AND EXTRACT(EPOCH FROM (NOW() - a.control_time)) <![CDATA[ < ]]> a.control_duration
</select>
<!-- 查询绿波优化记录表当天结束的绿波-->
<!-- <select id="selectGreenOptEndTimeEquipCode" resultType="net.wanji.opt.dto.induce.MessageParam">-->
<!-- select t1.green_id as greenId,-->
<!-- t1.control_time as endTime,-->
<!-- t2.equip_code as equipCode,-->
<!-- t2.id as induceId,-->
<!-- t2.source_id as sourceId-->
<!-- from (select green_id, max(control_time) control_time-->
<!-- from t_strategy_green_opt_hist t1-->
<!-- where control_time > CURDATE()-->
<!-- and control_method = -1-->
<!-- group by green_id) t1-->
<!-- left join t_greenwave_induces t2 on t1.green_id = t2.green_id-->
<!-- </select>-->
<select id="selectGreenOptEndTimeEquipCode" resultType="net.wanji.opt.dto.induce.MessageParam">
select t1.green_id as greenId,
t1.control_time as endTime,
t2.equip_code as equipCode,
t2.id as induceId,
t2.source_id as sourceId
from (select green_id, max(control_time) control_time
from t_strategy_green_opt_hist t1
where control_time > CURDATE()
and control_method = -1
group by green_id) t1
left join t_greenwave_induces t2 on t1.green_id = t2.green_id
SELECT t1.green_id AS greenId,
t1.control_time AS endTime,
t2.equip_code AS equipCode,
t2.id AS induceId,
t2.source_id AS sourceId
FROM (
SELECT green_id, MAX(control_time) control_time
FROM t_strategy_green_opt_hist t1
WHERE control_time > CURRENT_DATE
AND control_method = -1
GROUP BY green_id
) t1
LEFT JOIN t_greenwave_induces t2 ON t1.green_id :: INTEGER = t2.green_id
</select>
<!-- 查询最新的绿波优化记录列表 -->
<!-- <select id="selectLastGreenOptResultList" resultType="net.wanji.opt.vo2.dto.GreenLastOptResultDTO">-->
<!-- select t2.green_id as greenId,-->
<!-- DATE_FORMAT(t2.control_time, '%Y-%m-%d %H:%i:%s') as optTime,-->
<!-- t2.control_duration as duration,-->
<!-- t2.response_code as responseCode,-->
<!-- t2.control_method as controlMethod-->
<!-- from (select max(id) id, green_id-->
<!-- from t_strategy_green_opt_hist-->
<!-- where control_time > curdate()-->
<!-- group by green_id) t1-->
<!-- inner join t_strategy_green_opt_hist t2 on t1.id = t2.id and t1.green_id = t2.green_id-->
<!-- </select>-->
<select id="selectLastGreenOptResultList" resultType="net.wanji.opt.vo2.dto.GreenLastOptResultDTO">
select t2.green_id as greenId,
DATE_FORMAT(t2.control_time, '%Y-%m-%d %H:%i:%s') as optTime,
t2.control_duration as duration,
t2.response_code as responseCode,
t2.control_method as controlMethod
from (select max(id) id, green_id
from t_strategy_green_opt_hist
where control_time > curdate()
group by green_id) t1
inner join t_strategy_green_opt_hist t2 on t1.id = t2.id and t1.green_id = t2.green_id
SELECT t2.green_id AS greenId,
TO_CHAR(t2.control_time, 'YYYY-MM-DD HH24:MI:SS') AS optTime,
t2.control_duration AS duration,
t2.response_code AS responseCode,
t2.control_method AS controlMethod
FROM (
SELECT MAX(id) id, green_id
FROM t_strategy_green_opt_hist
WHERE control_time <![CDATA[ > ]]> CURRENT_DATE
GROUP BY green_id
) t1
INNER JOIN t_strategy_green_opt_hist t2 ON t1.id = t2.id AND t1.green_id = t2.green_id
</select>
<!-- 查询上周优化记录 -->
<!-- <select id="findGreenWaveOptHist" resultType="net.wanji.opt.dto.report.StrategyGreenOptHistDTO">-->
<!-- SELECT a.green_id,-->
<!-- a.dir as road_direction,-->
<!-- a.type as stragety_id,-->
<!-- a.control_time,-->
<!-- a.control_duration,-->
<!-- a.control_method,-->
<!-- min(DATE_SUB(CURDATE(), INTERVAL (WEEKDAY(CURDATE()) + 7) DAY)) week_start_day,-->
<!-- max(DATE_SUB(CURDATE(), INTERVAL (WEEKDAY(CURDATE()) ) +1 DAY)) week_end_day,-->
<!-- concat(year(control_time),'',(week(control_time)+1)) year_week,-->
<!-- (WEEKDAY(control_time)+1) week_day-->
<!-- FROM t_strategy_green_opt_hist a-->
<!-- WHERE control_time >= DATE_SUB(CURDATE(), INTERVAL (WEEKDAY(CURDATE()) + 7) DAY)-->
<!-- and control_time &lt; DATE_SUB(CURDATE(), INTERVAL (WEEKDAY(CURDATE()) ) DAY)-->
<!-- and control_method in (-1, 1)-->
<!-- group by green_id, control_time, control_duration, control_method-->
<!-- ORDER BY green_id,control_time-->
<!-- </select>-->
<select id="findGreenWaveOptHist" resultType="net.wanji.opt.dto.report.StrategyGreenOptHistDTO">
SELECT a.green_id,
a.dir as road_direction,
a.type as stragety_id,
a.control_time,
a.control_duration,
a.control_method,
min(DATE_SUB(CURDATE(), INTERVAL (WEEKDAY(CURDATE()) + 7) DAY)) week_start_day,
max(DATE_SUB(CURDATE(), INTERVAL (WEEKDAY(CURDATE()) ) +1 DAY)) week_end_day,
concat(year(control_time),'',(week(control_time)+1)) year_week,
(WEEKDAY(control_time)+1) week_day
SELECT a.green_id,
a.dir AS road_direction,
a.type AS stragety_id,
a.control_time,
a.control_duration,
a.control_method,
MIN(CURRENT_DATE - (EXTRACT(DOW FROM CURRENT_DATE) + 7) * INTERVAL '1 day') AS week_start_day,
MAX(CURRENT_DATE - (EXTRACT(DOW FROM CURRENT_DATE) + 1) * INTERVAL '1 day') AS week_end_day,
EXTRACT(YEAR FROM control_time) || '' || (TO_CHAR(control_time, 'WW') :: INT + 1) AS year_week,
EXTRACT(DOW FROM control_time) + 1 AS week_day
FROM t_strategy_green_opt_hist a
WHERE control_time >= DATE_SUB(CURDATE(), INTERVAL (WEEKDAY(CURDATE()) + 7) DAY)
and control_time &lt; DATE_SUB(CURDATE(), INTERVAL (WEEKDAY(CURDATE()) ) DAY)
and control_method in (-1, 1)
group by green_id, control_time, control_duration, control_method
ORDER BY green_id,control_time
WHERE control_time >= CURRENT_DATE - (EXTRACT(DOW FROM CURRENT_DATE) + 7) * INTERVAL '1 day'
AND control_time <![CDATA[ < ]]> CURRENT_DATE - EXTRACT(DOW FROM CURRENT_DATE) * INTERVAL '1 day'
AND control_method IN (-1, 1)
GROUP BY green_id, control_time, control_duration, control_method
ORDER BY green_id, control_time
</select>
</mapper>
\ No newline at end of file
......@@ -5,7 +5,10 @@
<mapper namespace="net.wanji.opt.dao.mapper.StrategyPlanInfoMapper">
<select id="selectByCrossId" resultType="net.wanji.opt.synthesis.pojo.StrategyPlanInfoEntity" parameterType="String" >
select * from t_strategy_plan_info where `cross_id`=#{crossId} and ( `status`=1 or `status` is null) and ((CURRENT_DATE &lt; `end_time` and CURRENT_DATE &gt; `start_time`) or `end_time` is null )
select * from t_strategy_plan_info where
`cross_id`=#{crossId} and ( `status`=1 or `status` is null)
and ((CURRENT_DATE &lt; `end_time` and CURRENT_DATE &gt; `start_time`)
or `end_time` is null )
</select>
<select id="selectAll" resultType="net.wanji.opt.synthesis.pojo.StrategyPlanInfoEntity" >
......
......@@ -4,52 +4,107 @@
<!-- 绿波路口查询 -->
<!-- <select id="findStatusDistribution" parameterType="map" resultType="net.wanji.opt.vo2.TrunkLineStatusDisInfoVO">-->
<!-- select-->
<!-- c.green_id as greenId,-->
<!-- c.road_direction as direction,-->
<!-- c.start_time as startTime ,-->
<!-- ROUND(AVG(c.speed), 2) as speed ,-->
<!-- ROUND(AVG(c.trval_time), 2) as travelTime,-->
<!-- ROUND(AVG(c.delay_time), 2) as delayTime,-->
<!-- ROUND(AVG(c.stop_times), 2) as stopTimes-->
<!-- from-->
<!-- (-->
<!-- select-->
<!-- b.green_id,-->
<!-- b.road_direction,-->
<!-- b.speed ,-->
<!-- b.trval_time,-->
<!-- b.delay_time,-->
<!-- b.stop_times,-->
<!-- DATE_FORMAT(FROM_UNIXTIME(ceil(UNIX_TIMESTAMP(b.start_time) / #{granule}) * #{granule}), '%H:%i') as start_time-->
<!-- from-->
<!-- (-->
<!-- select-->
<!-- a.green_id,-->
<!-- a.road_direction,-->
<!-- IFNULL(a.speed, 0) as speed,-->
<!-- IFNULL(a.trval_time, 0) as trval_time,-->
<!-- a.delay_time,-->
<!-- a.stop_times,-->
<!-- DATE_FORMAT(a.start_time, '%Y-%m-%d %H:%i:00') as start_time-->
<!-- from-->
<!-- t_greenwave_hist a-->
<!-- where-->
<!-- DATE_FORMAT(a.start_time, '%Y-%m-%d') = DATE_FORMAT(#{date},'%Y-%m-%d')-->
<!-- and a.green_id = #{greenID}-->
<!-- ) b-->
<!-- ) c-->
<!-- group by c.green_id, c.road_direction, c.start_time-->
<!-- </select>-->
<select id="findStatusDistribution" parameterType="map" resultType="net.wanji.opt.vo2.TrunkLineStatusDisInfoVO">
select
c.green_id as greenId,
c.road_direction as direction,
c.start_time as startTime ,
ROUND(AVG(c.speed), 2) as speed ,
ROUND(AVG(c.trval_time), 2) as travelTime,
ROUND(AVG(c.delay_time), 2) as delayTime,
ROUND(AVG(c.stop_times), 2) as stopTimes
c.start_time as startTime,
ROUND(AVG(c.speed)::numeric, 2) as speed,
ROUND(AVG(c.trval_time)::numeric, 2) as travelTime,
ROUND(AVG(c.delay_time)::numeric, 2) as delayTime,
ROUND(AVG(c.stop_times)::numeric, 2) as stopTimes
from
(
select
b.green_id,
b.road_direction,
b.speed ,
b.speed,
b.trval_time,
b.delay_time,
b.stop_times,
DATE_FORMAT(FROM_UNIXTIME(ceil(UNIX_TIMESTAMP(b.start_time) / #{granule}) * #{granule}), '%H:%i') as start_time
to_char(
to_timestamp(
ceil(extract(epoch from b.start_time :: TIMESTAMP ) / #{granule} :: INTEGER ) * #{granule} :: INTEGER
),
'HH24:MI'
) as start_time
from
(
select
a.green_id,
a.road_direction,
IFNULL(a.speed, 0) as speed,
IFNULL(a.trval_time, 0) as trval_time,
COALESCE(a.speed, 0) as speed,
COALESCE(a.trval_time, 0) as trval_time,
a.delay_time,
a.stop_times,
DATE_FORMAT(a.start_time, '%Y-%m-%d %H:%i:00') as start_time
to_char(a.start_time, 'YYYY-MM-DD HH24:MI:00') as start_time
from
t_greenwave_hist a
where
DATE_FORMAT(a.start_time, '%Y-%m-%d') = DATE_FORMAT(#{date},'%Y-%m-%d')
to_char(a.start_time, 'YYYY-MM-DD') = to_char(#{date}::date, 'YYYY-MM-DD')
and a.green_id = #{greenID}
) b
) c
group by c.green_id, c.road_direction, c.start_time
</select>
<!-- <select id="findPlanTime" parameterType="map" resultType="net.wanji.opt.vo2.TrunkLineOptTimeInfoVO">-->
<!-- select DISTINCT DATE_FORMAT(a.control_time,'%H:%i') as optStartTime ,DATE_FORMAT(DATE_ADD(a.control_time, INTERVAL a.duration SECOND),'%H:%i') as optEndTime-->
<!-- from t_strategy_green_opt_hist a-->
<!-- where DATE_FORMAT(a.control_time,'%Y-%m-%d') = DATE_FORMAT(#{date},'%Y-%m-%d')-->
<!-- and a.response_code = 200-->
<!-- and a.control_method = 1-->
<!-- and a.green_id = #{greenID}-->
<!-- </select>-->
<select id="findPlanTime" parameterType="map" resultType="net.wanji.opt.vo2.TrunkLineOptTimeInfoVO">
select DISTINCT DATE_FORMAT(a.control_time,'%H:%i') as optStartTime ,DATE_FORMAT(DATE_ADD(a.control_time, INTERVAL a.duration SECOND),'%H:%i') as optEndTime
select DISTINCT
to_char(a.control_time, 'HH24:MI') as optStartTime,
to_char(a.control_time + (a.duration * interval '1 second'), 'HH24:MI') as optEndTime
from t_strategy_green_opt_hist a
where DATE_FORMAT(a.control_time,'%Y-%m-%d') = DATE_FORMAT(#{date},'%Y-%m-%d')
and a.response_code = 200
and a.control_method = 1
and a.green_id = #{greenID}
where to_char(a.control_time, 'YYYY-MM-DD') = to_char(#{date}::date, 'YYYY-MM-DD')
and a.response_code = 200
and a.control_method = 1
and a.green_id = #{greenID}
</select>
</mapper>
......@@ -170,6 +170,8 @@
WHERE 1=1
<include refid="AnalysisGreenWaveOptimizeWeekByCondition" />
</select>
<select id="getTotalityData"
resultType="net.wanji.opt.controllerv2.report.vo.GreenWaveOptimizeAnalysisDataDTO">
SELECT
......@@ -196,6 +198,8 @@
</foreach>
</if>
</select>
<select id="selectListByYearWeek" resultType="net.wanji.opt.controllerv2.report.vo.AnalysisGreenWaveOptimizeWeekVO">
SELECT
<include refid="Base_Column_List"/>
......
......@@ -36,14 +36,14 @@
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 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
(select 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 event_type,sum(event_number) as event_number,sum(event_total_time) as event_total_time
from t_analysis_problem_cross_day
......
......@@ -32,20 +32,21 @@
#{item.insertTime}
)
</foreach>
ON DUPLICATE KEY UPDATE
congest_index = VALUES(congest_index),
max_congest_index = VALUES(max_congest_index),
congest_count = VALUES(congest_count),
congest_duration = VALUES(congest_duration),
max_congest_duration = VALUES(max_congest_duration),
flow = VALUES(flow),
travel_time = VALUES(travel_time),
speed = VALUES(speed),
max_congestion_period = VALUES(max_congestion_period),
second_congestion_period = VALUES(second_congestion_period),
start_time = VALUES(start_time),
end_time = VALUES(end_time),
insert_time = VALUES(insert_time);
on conflict (green_id, peak_type, day_type, year_week, road_direction)
do update set
congest_index = excluded.congest_index,
max_congest_index = excluded.max_congest_index,
congest_count = excluded.congest_count,
congest_duration = excluded.congest_duration,
max_congest_duration = excluded.max_congest_duration,
flow = excluded.flow,
travel_time = excluded.travel_time,
speed = excluded.speed,
max_congestion_period = excluded.max_congestion_period,
second_congestion_period = excluded.second_congestion_period,
start_time = excluded.start_time,
end_time = excluded.end_time,
insert_time = excluded.insert_time;
</insert>
<!-- 基本的 CRUD 方法由 MyBatis-Plus 自动生成,无需手动编写 -->
......
......@@ -19,7 +19,7 @@
case t.command_result when 1 then '成功' when 2 then '失败' when 3 then '停止失败任务解锁' end as command_result
FROM t_signal_utc_jinan.t_signal_command_log t
left join t_signal_utc_jinan.t_cross_info t1 on t.cross_id = t1.id
where t.query_time BETWEEN DATE_FORMAT(#{startTime},'%Y-%m-%d %H:%i:%s') and DATE_FORMAT(#{endTime},'%Y-%m-%d %H:%i:%s')
where t.query_time BETWEEN to_char(#{startTime},'YYYY-MM-DD HH24:MI:SS') and to_char(#{endTime},'YYYY-MM-DD HH24:MI:SS')
and t.data_info is not null
and t.command_type <![CDATA[ < ]]> 10
and t.cross_id = #{crossId}
......
......@@ -21,8 +21,8 @@
select
id,event_id,event_desc,type,start_time,end_time,source,wkt,image_url,gmt_create,gmt_modified
from t_event_data
where to_days(#{todayTime}) = to_days(start_time)
order by start_time desc;
where to_char(#{todayTime}::timestamp, 'YYYY-MM-DD HH24:MI:SS') = to_char(start_time, 'YYYY-MM-DD HH24:MI:SS')
order by start_time desc
</select>
......
......@@ -158,6 +158,10 @@
<artifactId>spring-boot-starter-logging</artifactId>
<groupId>org.springframework.boot</groupId>
</exclusion>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>
<!--热加载用-->
......@@ -171,6 +175,10 @@
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j2</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
<exclusion>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
......@@ -225,6 +233,12 @@
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
......@@ -376,10 +390,10 @@
<artifactId>zip4j</artifactId>
<version>1.3.2</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!-- <dependency>-->
<!-- <groupId>mysql</groupId>-->
<!-- <artifactId>mysql-connector-java</artifactId>-->
<!-- </dependency>-->
<!-- MP相关 start -->
<dependency>
<groupId>com.baomidou</groupId>
......@@ -556,10 +570,6 @@
<artifactId>curl</artifactId>
<version>0.0.43</version>
</dependency>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-core</artifactId>
</dependency>
</dependencies>
</project>
\ No newline at end of file
......@@ -5,14 +5,11 @@ import net.wanji.common.framework.Constants;
import net.wanji.common.framework.exception.FeignServiceException;
import net.wanji.common.framework.exception.RidException;
import net.wanji.common.framework.rest.JsonViewObject;
import org.apache.catalina.connector.ClientAbortException;
import org.springframework.dao.DuplicateKeyException;
import org.springframework.http.HttpStatus;
import org.springframework.http.converter.HttpMessageNotReadableException;
import org.springframework.validation.FieldError;
import org.springframework.web.bind.MethodArgumentNotValidException;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseStatus;
import org.springframework.web.bind.annotation.RestControllerAdvice;
import javax.servlet.http.HttpServletRequest;
......@@ -173,11 +170,4 @@ public class GlobalExceptionHandler {
log.error("RuntimeException异常:", e);
return JsonViewObject.newInstance().fail(errorMessage);
}
@ExceptionHandler(value = ClientAbortException.class)
@ResponseStatus(HttpStatus.OK)
public JsonViewObject clientExceptionHandler(ClientAbortException ex) {
log.error("ClientAbortException异常global:{}", ex);
return JsonViewObject.newInstance().success("");
}
}
......@@ -27,10 +27,6 @@
<artifactId>spring-cloud-commons</artifactId>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-core</artifactId>
</dependency>
<!--Nacos 配置中心-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
......
......@@ -83,11 +83,11 @@
<!-- 查询调度计划信息列表 -->
<select id="listSchedulesPlan" parameterType="String" resultMap="CrossSchedulesPlanPO">
SELECT
s.id id
,s.`name` name
s.id as id
,s.`name` as name
,s.`status`
,s.cross_id
,p.id plan_id
,p.id as plan_id
,p.plan_no
,sp.`week`
,sp.special_date
......
......@@ -31,7 +31,7 @@
cross_id,
cycle,
coord_phase,
offset
"offset"
from
t_base_cross_scheme
where 1=1
......
......@@ -103,6 +103,12 @@
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
......@@ -124,6 +130,12 @@
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>
......
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