Browse Source

Merge remote-tracking branch 'origin/develop' into develop

develop
wangsixiang 10 months ago
parent
commit
17ea7508d1
  1. 6
      zc-business/pom.xml
  2. 4
      zc-business/src/main/java/com/zc/business/constant/RedisKeyConstants.java
  3. 113
      zc-business/src/main/java/com/zc/business/controller/DcHolidaysController.java
  4. 2
      zc-business/src/main/java/com/zc/business/controller/DcNoStakeWarningTableController.java
  5. 111
      zc-business/src/main/java/com/zc/business/controller/DcTrafficFlowWarning.java
  6. 101
      zc-business/src/main/java/com/zc/business/controller/DcTrafficFlowWarningDate.java
  7. 13
      zc-business/src/main/java/com/zc/business/controller/DcTrafficStatisticsController.java
  8. 112
      zc-business/src/main/java/com/zc/business/controller/FTPDeletion.java
  9. 153
      zc-business/src/main/java/com/zc/business/controller/VideoController.java
  10. 2
      zc-business/src/main/java/com/zc/business/domain/DcEvent.java
  11. 2
      zc-business/src/main/java/com/zc/business/domain/DcEventVehicleAccident.java
  12. 82
      zc-business/src/main/java/com/zc/business/domain/DcHolidays.java
  13. 4
      zc-business/src/main/java/com/zc/business/enums/EventSubclassEnum.java
  14. 2
      zc-business/src/main/java/com/zc/business/enums/ValueConverter.java
  15. 81
      zc-business/src/main/java/com/zc/business/mapper/DcHolidaysMapper.java
  16. 4
      zc-business/src/main/java/com/zc/business/mapper/DcTollStationStatisticsDataMapper.java
  17. 81
      zc-business/src/main/java/com/zc/business/service/IDcHolidaysService.java
  18. 3
      zc-business/src/main/java/com/zc/business/service/IDcTollStationStatisticsDataService.java
  19. 2
      zc-business/src/main/java/com/zc/business/service/IDcTrafficStatisticsService.java
  20. 17
      zc-business/src/main/java/com/zc/business/service/impl/DcEventServiceImpl.java
  21. 123
      zc-business/src/main/java/com/zc/business/service/impl/DcHolidaysServiceImpl.java
  22. 8
      zc-business/src/main/java/com/zc/business/service/impl/DcTollStationStatisticsDataImpl.java
  23. 43
      zc-business/src/main/java/com/zc/business/service/impl/DcTrafficStatisticsServiceImpl.java
  24. 1
      zc-business/src/main/resources/mapper/business/DcEventTrafficControlMapper.xml
  25. 90
      zc-business/src/main/resources/mapper/business/DcHolidaysMapper.xml
  26. 33
      zc-business/src/main/resources/mapper/business/DcTollStationStatisticsDataMapper.xml
  27. 8
      zc-business/src/main/resources/mapper/business/DcTrafficIncidentsMapper.xml

6
zc-business/pom.xml

@ -21,6 +21,12 @@
<artifactId>org.eclipse.paho.client.mqttv3</artifactId>
<version>1.2.2</version>
</dependency>
<!-- FTTP-->
<dependency>
<groupId>commons-net</groupId>
<artifactId>commons-net</artifactId>
<version>3.8.0</version>
</dependency>
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>

4
zc-business/src/main/java/com/zc/business/constant/RedisKeyConstants.java

@ -45,4 +45,8 @@ public class RedisKeyConstants
* 企业微信access_token
*/
public static final String QYWX_ACCESS_TOKEN = "qywx:accessToken";
/**
* 交通流
*/
public static final String TRAFFIC_FLOW = "trafficFlow";
}

113
zc-business/src/main/java/com/zc/business/controller/DcHolidaysController.java

@ -0,0 +1,113 @@
package com.zc.business.controller;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
import com.ruoyi.common.enums.BusinessType;
import com.zc.business.domain.DcHolidays;
import com.zc.business.service.IDcHolidaysService;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.common.core.page.TableDataInfo;
/**
* 节假日 基础数据
Controller
*
* @author ruoyi
* @date 2024-06-18
*/
@RestController
@RequestMapping("/system/holidays")
public class DcHolidaysController extends BaseController
{
@Autowired
private IDcHolidaysService dcHolidaysService;
/**
* 查询节假日 基础数据
列表
*/
@PreAuthorize("@ss.hasPermi('system:holidays:list')")
@GetMapping("/list")
public TableDataInfo list(DcHolidays dcHolidays)
{
startPage();
List<DcHolidays> list = dcHolidaysService.selectDcHolidaysList(dcHolidays);
return getDataTable(list);
}
/**
* 导出节假日 基础数据
列表
*/
@PreAuthorize("@ss.hasPermi('system:holidays:export')")
@Log(title = "节假日 基础数据 ", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(HttpServletResponse response, DcHolidays dcHolidays)
{
List<DcHolidays> list = dcHolidaysService.selectDcHolidaysList(dcHolidays);
ExcelUtil<DcHolidays> util = new ExcelUtil<>(DcHolidays.class);
util.exportExcel(response, list, "节假日 基础数据数据");
}
/**
* 获取节假日 基础数据
详细信息
*/
@PreAuthorize("@ss.hasPermi('system:holidays:query')")
@GetMapping(value = "/{id}")
public AjaxResult getInfo(@PathVariable("id") Long id)
{
return AjaxResult.success(dcHolidaysService.selectDcHolidaysById(id));
}
/**
* 新增节假日 基础数据
*/
@PreAuthorize("@ss.hasPermi('system:holidays:add')")
@Log(title = "节假日 基础数据 ", businessType = BusinessType.INSERT)
@PostMapping
public AjaxResult add(@RequestBody DcHolidays dcHolidays)
{
return toAjax(dcHolidaysService.insertDcHolidays(dcHolidays));
}
/**
* 修改节假日 基础数据
*/
@PreAuthorize("@ss.hasPermi('system:holidays:edit')")
@Log(title = "节假日 基础数据 ", businessType = BusinessType.UPDATE)
@PutMapping
public AjaxResult edit(@RequestBody DcHolidays dcHolidays)
{
return toAjax(dcHolidaysService.updateDcHolidays(dcHolidays));
}
/**
* 删除节假日 基础数据
*/
@PreAuthorize("@ss.hasPermi('system:holidays:remove')")
@Log(title = "节假日 基础数据 ", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public AjaxResult remove(@PathVariable Long[] ids)
{
return toAjax(dcHolidaysService.deleteDcHolidaysByIds(ids));
}
}

2
zc-business/src/main/java/com/zc/business/controller/DcNoStakeWarningTableController.java

@ -26,7 +26,7 @@ import java.util.List;
*/
@Api(tags = {"无桩号预警"})
@RestController
@RequestMapping("/business/DcNoStakeWarningTableServiceImpl")
@RequestMapping("/business/dcNoStakeWarningTable")
public class DcNoStakeWarningTableController extends BaseController {
@Resource
private DcNoStakeWarningTableServiceImpl dcNoStakeWarningTableService;

111
zc-business/src/main/java/com/zc/business/controller/DcTrafficFlowWarning.java

@ -0,0 +1,111 @@
package com.zc.business.controller;
import com.google.gson.Gson;
import com.ruoyi.common.utils.uuid.IdUtils;
import com.ruoyi.common.utils.uuid.UUID;
import com.zc.business.domain.DcHolidays;
import com.zc.business.domain.DcNoStakeWarningTable;
import com.zc.business.service.IDcGantryStatisticsDataService;
import com.zc.business.service.IDcHolidaysService;
import com.zc.business.service.impl.DcNoStakeWarningTableServiceImpl;
import com.zc.common.core.websocket.WebSocketService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.*;
/**
*
*/
@Component
public class DcTrafficFlowWarning {
@Resource
private DcNoStakeWarningTableServiceImpl dcNoStakeWarningTableService;
@Autowired
private IDcHolidaysService dcHolidaysService;
@Autowired
private IDcGantryStatisticsDataService dcGantryStatisticsDataService;
//@Scheduled(cron = "0/10 * * * * ?")
//@Scheduled(cron = "0 0/5 * * * ?")
public void DcTrafficFlow() {
System.out.println("每隔10秒执行一次:" + new Date());
// 获取当前日期
LocalDate currentDate = LocalDate.now();
// 获取当前年份
int currentYear = currentDate.getYear();
DcHolidays dcHolidays = new DcHolidays();
dcHolidays.setDate(currentYear);
//查询当前年份假期
List<DcHolidays> dcHolidaysList = dcHolidaysService.selectDcHolidaysList(dcHolidays);
// 计算当前日期加上七天的日期
LocalDate dateAfterSevenDays = currentDate.plusDays(7);
// 格式化日期输出(可选)
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
String formattedDate = dateAfterSevenDays.format(formatter);
//String formattedDate ="2024-05-01";
for (DcHolidays holidays : dcHolidaysList) {
String vacation = holidays.getVacation();
String[] dates = vacation.split("\\|");
//判断当前日期+ 7天 与 日期 数据对比
if (formattedDate.equals(dates[0])) {
//当前假期名称
String name = holidays.getName();
dcHolidays.setDate(currentYear-1);
DcHolidays dcHolidaysLast = dcHolidaysService.selectDcHolidaysListNameByDate(currentYear-1,name);
String vacation1 = dcHolidaysLast.getVacation();
String[] date = vacation1.split("\\|");
Map<String, Map<String, List<Map<String,String>>>> mapListOne = new HashMap<>();
Map<String, List<Map<String,String>>> map = new HashMap<>();
Map<String, List<Map<String,String>>> map2 = new HashMap<>();
for (int i1 = 0; i1 < date.length; i1++) {
List<Map<String,String>> mapList = dcGantryStatisticsDataService.realTimeTrafficFlow( date[i1],"1","4");
List<Map<String,String>> mapList2 = dcGantryStatisticsDataService.realTimeTrafficFlow(date[i1],"3","4");
// 计算当前日期加上七天后的日期
LocalDate dateAfterSevenDay = currentDate.plusDays(7+i1);
DateTimeFormatter formattedDateLst = DateTimeFormatter.ofPattern("yyyy-MM-dd");
String formatted = dateAfterSevenDay.format(formattedDateLst);
map.put(formatted,mapList);
map2.put(formatted,mapList2);
}
mapListOne.put("1",map);
mapListOne.put("3",map2);
// 创建Gson对象
Gson gson = new Gson();
// 将Map转换为JSON字符串
String jsonString = gson.toJson(mapListOne);
DcNoStakeWarningTable dcNoStakeWarningTable = new DcNoStakeWarningTable();
dcNoStakeWarningTable.setWarningDescription(name +"交通流数据预警提醒");
dcNoStakeWarningTable.setWarningType("1");
dcNoStakeWarningTable.setOtherConfig(jsonString);
dcNoStakeWarningTable.setWarningTime(new Date());
dcNoStakeWarningTableService.addDcNoStakeWarningTable(dcNoStakeWarningTable);
Map<String,Object> contentMap = new HashMap<>();
contentMap.put("content",name +"交通流数据预警提醒");
contentMap.put("trafficFlowDataEarlyWarning",jsonString);
WebSocketService.broadcast("trafficFlowDataEarlyWarning", contentMap);
// 打印JSON字符串
System.out.println(jsonString.length());
}
}
}
}

101
zc-business/src/main/java/com/zc/business/controller/DcTrafficFlowWarningDate.java

@ -0,0 +1,101 @@
package com.zc.business.controller;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.ruoyi.system.service.ISysConfigService;
import com.zc.business.domain.DcHolidays;
import com.zc.business.service.IDcHolidaysService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.time.LocalDate;
import java.util.List;
/**
*
*/
@Component
public class DcTrafficFlowWarningDate {
@Autowired
private IDcHolidaysService dcHolidaysService;
@Autowired
private ISysConfigService configService;
//@Scheduled(cron = "0/10 * * * * ?")
public void yearPriorToAcquisition() {
try {
String apiKey= configService.selectConfigByKey("holidayKey");//密钥
// 获取当前日期
LocalDate currentDate = LocalDate.now();
// 获取前一年 年份
int currentYear = currentDate.getYear();
String urlString = "https://apis.tianapi.com/jiejiari/index?key=" + apiKey + "&date=" + currentYear + "&type=1";
URL url = new URL(urlString);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
connection.setRequestProperty("Accept", "application/json");
if (connection.getResponseCode() != 200) {
throw new RuntimeException("HTTP错误码:" + connection.getResponseCode());
}
BufferedReader br = new BufferedReader(new InputStreamReader((connection.getInputStream())));
String output;
StringBuilder response = new StringBuilder();
while ((output = br.readLine()) != null) {
response.append(output);
}
connection.disconnect();
JSONObject jsonResponse = JSONObject.parseObject(response.toString());
// 检查响应状态是否成功
if (jsonResponse.getInteger("code") == 200) {
// 获取result对象
JSONObject resultObj = jsonResponse.getJSONObject("result");
// 获取节假日列表JSONArray
JSONArray listArray = resultObj.getJSONArray("list");
DcHolidays dcHolidays = new DcHolidays();
dcHolidays.setDate(currentYear);
List<DcHolidays> dcHolidays1 = dcHolidaysService.selectDcHolidaysList(dcHolidays);
if (dcHolidays1.size() <=0){
// 遍历节假日列表 添加数据
for (int i = 0; i < listArray.size(); i++) {
JSONObject holidayObj = listArray.getJSONObject(i);
String vacation = holidayObj.getString("vacation");
String name = holidayObj.getString("name");
dcHolidays.setName(name);
dcHolidays.setVacation(vacation);
// 年份
dcHolidays.setDate(currentYear);
int i1 = dcHolidaysService.insertDcHolidays(dcHolidays);
}
}else {
// 遍历节假日列表 修改数据
for (int i = 0; i < listArray.size(); i++) {
JSONObject holidayObj = listArray.getJSONObject(i);
String vacation = holidayObj.getString("vacation");
String name = holidayObj.getString("name");
DcHolidays dcHoliday = new DcHolidays();
dcHoliday.setName(name);
dcHoliday.setVacation(vacation);
// 年份
dcHoliday.setDate(currentYear);
dcHolidaysService.updateDcHoliday(dcHoliday);
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}

13
zc-business/src/main/java/com/zc/business/controller/DcTrafficStatisticsController.java

@ -400,14 +400,15 @@ public AjaxResult trafficFlowAtTollStationEntrance(String startDate, String endD
return AjaxResult.success(mapList);
}
/**
* 全路段双向实时车流量
* 获取据库中 收费站统计数据
* @param startDate 时间
* @param direction 方向
* @param accessType 出入口 1入 2出
* @param periodType 方向
*/
@ApiOperation("集团双向实时车流量")
@GetMapping("/history/realTimeTrafficFlowHour2")
public AjaxResult realTimeTrafficFlowHour2(String startDate,Long direction) throws HttpException, IOException{
JSONArray mapList = dcTrafficStatisticsService.realTimeTrafficFlowHour2(startDate,direction);
@ApiOperation("获取据库中收费站数数据")
@GetMapping("/history/TollBoothStatistics")
public AjaxResult TollBoothStatistics(String startDate,String accessType,String periodType) throws HttpException, IOException{
List<DcTollStationStatisticsData> mapList = dcTollStationStatisticsDataService.TollBoothStatistics(startDate,accessType,periodType);
// 将查询结果封装为成功响应并返回
return AjaxResult.success(mapList);
}

112
zc-business/src/main/java/com/zc/business/controller/FTPDeletion.java

@ -0,0 +1,112 @@
package com.zc.business.controller;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import java.io.IOException;
import java.time.Instant;
import java.time.temporal.ChronoUnit;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPFile;
/**
*
*/
@Component("FTPDeletion")
@Slf4j
public class FTPDeletion {
private static int retentionDays = 60; // 默认保存天数为60天
public void deleteEventFile() {
log.info("定时任务执行,当前保存天气设置天数:"+retentionDays+"当前时间:"+java.time.LocalTime.now());
new FTPDeletion().remoteFileDeletion();
}
//修改当前保存天数
public void deleteEventFile(int days) {
this.retentionDays = days;
}
//获取当前保存天数
public int getRetentionDays() {
return retentionDays;
}
// 递归方法来处理文件和目录的删除
private void deleteDirectoryRecursively(FTPClient ftpClient, String parentDirPath) throws IOException {
ftpClient.setControlEncoding("GBK");
FTPFile[] files = ftpClient.listFiles(parentDirPath);
//选择要保留的天数
Instant thirtyDaysAgo = Instant.now().minus(retentionDays, ChronoUnit.DAYS);
log.info("当前设置的文件保存天数为:"+FTPDeletion.retentionDays+"当前时间:"+java.time.LocalTime.now());
for (FTPFile file : files) {
String filePath = parentDirPath + "/" + file.getName();
if (file.isDirectory()) {
// 如果是目录,则递归调用
deleteDirectoryRecursively(ftpClient, filePath);
} else {
// 排除包含特定关键词的文件名
if (!file.getName().contains("事故")) {
// 删除30天前的文件
Instant lastModifiedTime = file.getTimestamp().toInstant();
if (lastModifiedTime.isBefore(thirtyDaysAgo)) {
boolean deleted = ftpClient.deleteFile(filePath);
if (deleted) {
log.info("已删除文件:"+filePath);
} else {
log.info("无法删除文件:"+filePath);
}
}
} else {
log.info("文件名包含关键词'事故',跳过删除: :"+file.getName());
}
}
}
// 检查并删除空目录(但不删除根目录)
if (!parentDirPath.equals("/")) {
FTPFile[] remainingFiles = ftpClient.listFiles(parentDirPath);
if (remainingFiles.length == 0) {
boolean removed = ftpClient.removeDirectory(parentDirPath);
if (removed) {
log.info("已删除目录:"+parentDirPath);
} else {
log.info("无法删除目录:"+parentDirPath);
}
}
}
}
public void remoteFileDeletion() {
String server = "192.168.3.1";
int port = 21;
String user = "1911390090@qq.com";
String password = "989878wxl";
try {
FTPClient ftpClient = new FTPClient();
ftpClient.setControlEncoding("GBK");
ftpClient.connect(server, port);
ftpClient.login(user, password);
ftpClient.enterLocalPassiveMode();
ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
// 指定远程根目录
String remoteDirPath = "/";
// 从根目录开始递归删除
deleteDirectoryRecursively(ftpClient, remoteDirPath);
ftpClient.logout();
ftpClient.disconnect();
} catch (IOException e) {
e.printStackTrace();
}
}
}

153
zc-business/src/main/java/com/zc/business/controller/VideoController.java

@ -166,9 +166,6 @@ public class VideoController extends BaseController {
JSONObject cameraInfo = JSONObject.parseObject(configService.selectConfigByKey("dc.cameraInfo"));
JSONObject jsonResult = null;
// 1000 米
String distance = "1000";
@ -194,19 +191,7 @@ public class VideoController extends BaseController {
.data(requestParams) // 请求参数
.get(); // 请求方法
if (response.body() != null) {
jsonResult = JSONObject.parseObject(response.body().string());
if (jsonResult.containsKey("code") && UNAUTHORIZED.equals(jsonResult.getInteger("code"))) {
getToken();
okHttp.get();
if (response.body() != null) {
jsonResult = JSONObject.parseObject(response.body().string());
}
}
}
return jsonResult;
return getJsonResult(response,okHttp);
}
@ -348,9 +333,6 @@ public class VideoController extends BaseController {
public JSONObject synchronizeCameraData() throws HttpException, IOException {
JSONObject cameraInfo = JSONObject.parseObject(configService.selectConfigByKey("dc.cameraInfo"));
JSONObject jsonResult = null;
OkHttp okHttp = new OkHttp();
RequestParams requestParams = new RequestParams();
@ -370,19 +352,7 @@ public class VideoController extends BaseController {
.data(requestParams) // 请求参数
.get(); // 请求方法
if (response.body() != null) {
jsonResult = JSONObject.parseObject(response.body().string());
if (jsonResult.containsKey("code") && UNAUTHORIZED.equals(jsonResult.getInteger("code"))) {
getToken();
okHttp.get();
if (response.body() != null) {
jsonResult = JSONObject.parseObject(response.body().string());
}
}
}
return jsonResult;
return getJsonResult(response,okHttp);
}
@ -532,26 +502,61 @@ public class VideoController extends BaseController {
return jsonResult;
}
/**
* 云平台控制
* 新增预置位
*/
@ApiOperation("云平台控制")
@GetMapping(value = "/PTZControl")
public JSONObject PTZControl(@ApiParam(value = "相机id", name = "camId", required = true) String camId,
@ApiParam(value = "指令类型", name = "cmdType", required = true) String cmdType,
@ApiParam(value = "速度", name = "speed", required = true) String speed) throws HttpException, IOException {
@ApiOperation("新增预置位")
@GetMapping(value = "/addPreset")
public JSONObject addPreset(@ApiParam(value = "相机id", name = "camId", required = true) String camId,
@ApiParam(value = "预置位名称", name = "presetName", required = true) String presetName) throws HttpException, IOException {
JSONObject cameraInfo = JSONObject.parseObject(configService.selectConfigByKey("dc.cameraInfo"));
OkHttp okHttp = new OkHttp();
JSONObject jsonResult = null;
RequestParams requestParams = new RequestParams();
requestParams.put("camId", camId);
requestParams.put("presetName", presetName);
Map<String, String> header = new HashMap<>();
if (VideoController.TOKEN == null) {
getToken();
}
header.put("Authorization", TOKEN);
Response response // 请求响应
= okHttp
.headers(header)
.url(cameraInfo.getString("URL") + "/preset/addPreset") // 请求地址
.data(requestParams) // 请求参数
.post(); // 请求方法
// 新增预置位
JSONObject addPresetResult = getJsonResult(response, okHttp);
if (addPresetResult.get("code").equals(200)) {
JSONObject data = JSON.parseObject(addPresetResult.get("data").toString());
return PTZControl(camId, "8", data.getString("presetId"));
}else {
JSONObject error = new JSONObject();
error.put("code",500);
error.put("msg","新增预置位失败");
return error;
}
}
/**
* 查询预置位列表
*/
@ApiOperation("查询预置位列表")
@GetMapping(value = "/presetList")
public JSONObject presetList(@ApiParam(value = "相机id", name = "camId", required = true) String camId) throws HttpException, IOException {
JSONObject cameraInfo = JSONObject.parseObject(configService.selectConfigByKey("dc.cameraInfo"));
OkHttp okHttp = new OkHttp();
RequestParams requestParams = new RequestParams();
requestParams.put("msgType", "3");
requestParams.put("camId", camId);
requestParams.put("cmdType", cmdType);
requestParams.put("speed", speed);
Map<String, String> header = new HashMap<>();
@ -564,10 +569,17 @@ public class VideoController extends BaseController {
Response response // 请求响应
= okHttp
.headers(header)
.url(cameraInfo.getString("URL") + "/videoInfo/api/PTZControl") // 请求地址
.url(cameraInfo.getString("URL") + "/preset/presetList") // 请求地址
.data(requestParams) // 请求参数
.get(); // 请求方法
return getJsonResult(response,okHttp);
}
/**
* 返回结果处理
*/
public JSONObject getJsonResult(Response response, OkHttp okHttp) throws HttpException, IOException {
JSONObject jsonResult = null;
if (response.body() != null) {
jsonResult = JSONObject.parseObject(response.body().string());
@ -579,11 +591,47 @@ public class VideoController extends BaseController {
}
}
}
return jsonResult;
}
/**
* 云平台控制
*/
@ApiOperation("云平台控制")
@GetMapping(value = "/PTZControl")
public JSONObject PTZControl(@ApiParam(value = "相机id", name = "camId", required = true) String camId,
@ApiParam(value = "指令类型", name = "cmdType", required = true) String cmdType,
@ApiParam(value = "速度", name = "speed", required = true) String speed) throws HttpException, IOException {
JSONObject cameraInfo = JSONObject.parseObject(configService.selectConfigByKey("dc.cameraInfo"));
OkHttp okHttp = new OkHttp();
RequestParams requestParams = new RequestParams();
requestParams.put("msgType", "3");
requestParams.put("camId", camId);
requestParams.put("cmdType", cmdType);
requestParams.put("speed", speed);
Map<String, String> header = new HashMap<>();
if (VideoController.TOKEN == null) {
getToken();
}
header.put("Authorization", TOKEN);
Response response // 请求响应
= okHttp
.headers(header)
.url(cameraInfo.getString("URL") + "/videoInfo/api/PTZControl") // 请求地址
.data(requestParams) // 请求参数
.get(); // 请求方法
return getJsonResult(response,okHttp);
}
public void getToken() throws HttpException, IOException {
JSONObject cameraInfo = JSONObject.parseObject(configService.selectConfigByKey("dc.cameraInfo"));
@ -618,8 +666,6 @@ public class VideoController extends BaseController {
public JSONObject getCamByDept() throws HttpException, IOException {
JSONObject cameraInfo = JSONObject.parseObject(configService.selectConfigByKey("dc.cameraInfo"));
JSONObject jsonResult = null;
OkHttp okHttp = new OkHttp();
RequestParams requestParams = new RequestParams();
@ -639,19 +685,8 @@ public class VideoController extends BaseController {
.url(cameraInfo.getString("URL") + "/system/camera/camList") // 请求地址
.data(requestParams) // 请求参数
.get(); // 请求方法
if (response.body() != null) {
jsonResult = JSONObject.parseObject(response.body().string());
if (jsonResult.containsKey("code") && UNAUTHORIZED.equals(jsonResult.getInteger("code"))) {
getToken();
okHttp.get();
if (response.body() != null) {
jsonResult = JSONObject.parseObject(response.body().string());
}
}
}
return jsonResult;
return getJsonResult(response,okHttp);
}
/**

2
zc-business/src/main/java/com/zc/business/domain/DcEvent.java

@ -138,7 +138,7 @@ public class DcEvent {
* 3-4 服务区封闭和限行
*/
@ApiModelProperty("事件子类 例:事件子类:* 1-1 追尾* 1-2 侧翻* 1-3 撞护栏* 1-4 自* 1-5 其他事故* 2-1 车辆故障")
@ApiModelProperty("事件子类 例:事件子类:* 1-1 追尾* 1-2 侧翻* 1-3 撞护栏* 1-4 自* 1-5 其他事故* 2-1 车辆故障")
private String eventSubclass;
/**

2
zc-business/src/main/java/com/zc/business/domain/DcEventVehicleAccident.java

@ -47,7 +47,7 @@ public class DcEventVehicleAccident extends BaseEntity
/** 压车(公里) */
@ApiModelProperty("压车(公里)")
private Long trafficJam;
private Float trafficJam;
/** 天气情况
1-

82
zc-business/src/main/java/com/zc/business/domain/DcHolidays.java

@ -0,0 +1,82 @@
package com.zc.business.domain;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
/**
* 节假日 基础数据
对象 dc_holidays
*
* @author ruoyi
* @date 2024-06-18
*/
public class DcHolidays extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** 节假日名称 */
@Excel(name = "节假日名称")
private String name;
/** 节假日假期 */
@Excel(name = "节假日假期 ")
private String vacation;
/** 日期 年份 */
@Excel(name = "日期 年份")
private Integer date;
/** $column.columnComment */
private Long id;
public void setName(String name)
{
this.name = name;
}
public String getName()
{
return name;
}
public void setVacation(String vacation)
{
this.vacation = vacation;
}
public String getVacation()
{
return vacation;
}
public void setDate(Integer date)
{
this.date = date;
}
public Integer getDate()
{
return date;
}
public void setId(Long id)
{
this.id = id;
}
public Long getId()
{
return id;
}
@Override
public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
.append("name", getName())
.append("vacation", getVacation())
.append("date", getDate())
.append("createTime", getCreateTime())
.append("updateTime", getUpdateTime())
.append("id", getId())
.toString();
}
}

4
zc-business/src/main/java/com/zc/business/enums/EventSubclassEnum.java

@ -8,7 +8,7 @@ public enum EventSubclassEnum {
REAR_END_COLLISION("1-1", "追尾","前方*发生追尾 注意避让"),
ROLLOVER("1-2", "侧翻","前方*发生侧翻 注意避让"),
COLLISION_WITH_GUARDRAIL("1-3", "撞护栏","前方*车撞击护栏注意避让"),
NATURAL("1-4", "自然","前方*发生自然现象请注意"),
NATURAL("1-4", "自燃","前方*发生自燃现象请注意"),
OTHER_ACCIDENTS("1-5", "其他事故","前方*发生事故谨慎驾驶"),
VEHICLE_MALFUNCTION("2-1", "车辆故障","前方*发生故障注意避让"),
THE_MAIN_LINE_IS_CLOSED_AND_RESTRICTED("3-1", "主线封闭和限行","前方*主线封闭和限行"),
@ -35,7 +35,7 @@ public enum EventSubclassEnum {
OTHER_ABNORMALITIES_IN_THE_SERVICE_AREA("8-3", "服务区其他异常","前方*服务区设备停用"),
RAIN("10-1", "雨","雨天请谨慎驾驶"),
SNOW("10-2", "雪","雪天路滑请谨慎驾驶"),
HEAVY_FOG("10-3", "雾","大雾天气请谨慎驾驶"),
HEAVY_FOG("10-3", "雾","大雾天气请谨慎驾驶"),
GALE("10-4", "大风","大风天气请谨慎驾驶"),
LOW_TEMPERATURE_COLD_WAVE("10-5", "低温寒潮","低温寒潮天气请谨慎驾驶"),
SNOW_ON_ROAD_SURFACE("10-6", "路面积雪","路面积雪请谨慎驾驶"),

2
zc-business/src/main/java/com/zc/business/enums/ValueConverter.java

@ -126,7 +126,7 @@ public class ValueConverter {
eventSubclassName.put("1-1","追尾");
eventSubclassName.put("1-2","侧翻");
eventSubclassName.put("1-3","撞护栏");
eventSubclassName.put("1-4","自");
eventSubclassName.put("1-4","自");
eventSubclassName.put("1-5","其他事故");
eventSubclassName.put("2-1","车辆故障");
eventSubclassName.put("3-1","主线封闭和限行");

81
zc-business/src/main/java/com/zc/business/mapper/DcHolidaysMapper.java

@ -0,0 +1,81 @@
package com.zc.business.mapper;
import com.zc.business.domain.DcHolidays;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* 节假日 基础数据
Mapper接口
*
* @author ruoyi
* @date 2024-06-18
*/
public interface DcHolidaysMapper
{
/**
* 查询节假日 基础数据
*
* @param id 节假日 基础数据
主键
* @return 节假日 基础数据
*/
public DcHolidays selectDcHolidaysById(Long id);
/**
* 查询节假日 基础数据
列表
*
* @param dcHolidays 节假日 基础数据
* @return 节假日 基础数据
集合
*/
List<DcHolidays> selectDcHolidaysList(DcHolidays dcHolidays);
/**
* 新增节假日 基础数据
*
* @param dcHolidays 节假日 基础数据
* @return 结果
*/
int insertDcHolidays(DcHolidays dcHolidays);
/**
* 修改节假日 基础数据
*
* @param dcHolidays 节假日 基础数据
* @return 结果
*/
int updateDcHolidays(DcHolidays dcHolidays);
/**
* 删除节假日 基础数据
*
* @param id 节假日 基础数据
主键
* @return 结果
*/
int deleteDcHolidaysById(Long id);
/**
* 批量删除节假日 基础数据
*
* @param ids 需要删除的数据主键集合
* @return 结果
*/
int deleteDcHolidaysByIds(Long[] ids);
int updateDcHoliday(DcHolidays dcHolidays);
DcHolidays selectDcHolidaysListNameByDate(@Param("date") int date, @Param("name") String name);
}

4
zc-business/src/main/java/com/zc/business/mapper/DcTollStationStatisticsDataMapper.java

@ -3,8 +3,10 @@ package com.zc.business.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.zc.business.domain.DcTollStationStatisticsData;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.Date;
import java.util.List;
/**
* 这是一个接口的注释用于描述收费站数据统计的Mapper
@ -29,5 +31,7 @@ public interface DcTollStationStatisticsDataMapper extends BaseMapper<DcTollStat
* @return 返回最大的统计日期
*/
Date getMaxStatisticalDate();
List<DcTollStationStatisticsData> TollBoothStatistics(@Param("startDate") String startDate, @Param("accessType") String accessType, @Param("periodType") String periodType);
}

81
zc-business/src/main/java/com/zc/business/service/IDcHolidaysService.java

@ -0,0 +1,81 @@
package com.zc.business.service;
import com.zc.business.domain.DcHolidays;
import java.util.List;
/**
* 节假日 基础数据
Service接口
*
* @author ruoyi
* @date 2024-06-18
*/
public interface IDcHolidaysService
{
/**
* 查询节假日 基础数据
*
* @param id 节假日 基础数据
主键
* @return 节假日 基础数据
*/
public DcHolidays selectDcHolidaysById(Long id);
/**
* 查询节假日 基础数据
列表
*
* @param dcHolidays 节假日 基础数据
* @return 节假日 基础数据
集合
*/
List<DcHolidays> selectDcHolidaysList(DcHolidays dcHolidays);
/**
* 新增节假日 基础数据
*
* @param dcHolidays 节假日 基础数据
* @return 结果
*/
int insertDcHolidays(DcHolidays dcHolidays);
/**
* 修改节假日 基础数据
*
* @param dcHolidays 节假日 基础数据
* @return 结果
*/
int updateDcHolidays(DcHolidays dcHolidays);
/**
* 批量删除节假日 基础数据
*
* @param ids 需要删除的节假日 基础数据
主键集合
* @return 结果
*/
int deleteDcHolidaysByIds(Long[] ids);
/**
* 删除节假日 基础数据
信息
*
* @param id 节假日 基础数据
主键
* @return 结果
*/
int deleteDcHolidaysById(Long id);
int updateDcHoliday(DcHolidays dcHolidays);
DcHolidays selectDcHolidaysListNameByDate(int date, String name);
}

3
zc-business/src/main/java/com/zc/business/service/IDcTollStationStatisticsDataService.java

@ -1,5 +1,6 @@
package com.zc.business.service;
import com.alibaba.fastjson.JSONArray;
import com.baomidou.mybatisplus.extension.service.IService;
import com.zc.business.domain.DcTollStationStatisticsData;
@ -37,4 +38,6 @@ public interface IDcTollStationStatisticsDataService extends IService<DcTollStat
* 累计车流量
*/
List<DcTollStationStatisticsData> accumulatedFlow(DcTollStationStatisticsData request);
List<DcTollStationStatisticsData> TollBoothStatistics(String startDate, String accessType, String periodType);
}

2
zc-business/src/main/java/com/zc/business/service/IDcTrafficStatisticsService.java

@ -53,6 +53,6 @@ public interface IDcTrafficStatisticsService {
List<Map<String, Object>> realTimeTrafficFlowHour(String startDate,Long direction) throws HttpException, IOException;
JSONArray realTimeTrafficFlowHour2(String startDate,Long direction) throws HttpException, IOException;
// JSONArray realTimeTrafficFlowHour2(String startDate,Long direction) throws HttpException, IOException;
}

17
zc-business/src/main/java/com/zc/business/service/impl/DcEventServiceImpl.java

@ -216,9 +216,9 @@ public class DcEventServiceImpl extends ServiceImpl<DcEventMapper, DcEvent> impl
int i7 = dcEventMapper.insertDcEvent(dcEvent);
if (i7 > 0 && eventType != 3) {
/* if (i7 > 0 && eventType != 3) {
extracted(dcEvent);//事件推送到 首页
}
}*/
if (i7 > 0) {
//if (dcEvent.getDcEventTrafficControl().getFacilityIds().length<1 &&dcEventId == null){//非 事件处置 和收费站等多条数据添加
@ -235,6 +235,9 @@ public class DcEventServiceImpl extends ServiceImpl<DcEventMapper, DcEvent> impl
int i1 = dcEventAccidentMapper.insertDcEventAccident(dcEvent.getDcEventAccident());
if (dcEvent.getEventState() == 1) {
updateDcEventState(uuid,1);//直接确认
}else {
extracted(dcEvent);//事件推送到 首页
}
}
break;
@ -245,6 +248,8 @@ public class DcEventServiceImpl extends ServiceImpl<DcEventMapper, DcEvent> impl
int i5 = dcEventVehicleAccidentMapper.insertDcEventVehicleAccident(dcEvent.getDcEventVehicleAccident());
if (dcEvent.getEventState() ==1) {
updateDcEventState(uuid,1);//直接确认
}else {
extracted(dcEvent);//事件推送到 首页
}
}
break;
@ -318,7 +323,7 @@ public class DcEventServiceImpl extends ServiceImpl<DcEventMapper, DcEvent> impl
//首页事件 交通管制事件 添加 状态默认为 1 处置中
updateDcEventState(dcEvent.getId(), 1);
} else {
extracted(dcEvent);//事件推送到 首页
// extracted(dcEvent);//事件推送到 首页
dcEvent.getDcEventTrafficControl().setId(uuid);
dcEvent.getDcEventTrafficControl().setFacilityId(dcEvent.getDcEventTrafficControl().getFacilityIds()[0]);//取出数组字段赋值 设施id
@ -394,7 +399,7 @@ public class DcEventServiceImpl extends ServiceImpl<DcEventMapper, DcEvent> impl
//交通管制
if (eventType == 3 && dcEvent.getDcEventTrafficControl().getFacilityIds()[i] != null) {
String facilityId = String.valueOf(dcEvent.getDcEventTrafficControl().getFacilityIds()[i]);
dcEvent.setStakeMark(extracted(facilityId));
// dcEvent.setStakeMark(extracted(facilityId));
}
dcEvent.setOccurrenceTime(DateUtils.getNowDate());//默认发生时间
dcEventMapper.insertDcEvent(dcEvent);
@ -447,12 +452,12 @@ public class DcEventServiceImpl extends ServiceImpl<DcEventMapper, DcEvent> impl
//交通管制
if (eventType == 3 && dcEvent.getDcEventTrafficControl().getFacilityIds()[i] != null) {
String facilityId = String.valueOf(dcEvent.getDcEventTrafficControl().getFacilityIds()[i]);
dcEvent.setStakeMark(extracted(facilityId));
// dcEvent.setStakeMark(extracted(facilityId));
}
dcEvent.setOccurrenceTime(DateUtils.getNowDate());//默认发生时间
dcEventMapper.insertDcEvent(dcEvent);
extracted(dcEvent);
// extracted(dcEvent);
int i6 = dcEventTrafficControlMapper.insertDcEventTrafficControl(dcEvent.getDcEventTrafficControl());
updateDcEventState(map.get("facilityId" + i),1);//直接确认

123
zc-business/src/main/java/com/zc/business/service/impl/DcHolidaysServiceImpl.java

@ -0,0 +1,123 @@
package com.zc.business.service.impl;
import java.util.List;
import com.ruoyi.common.utils.DateUtils;
import com.zc.business.domain.DcHolidays;
import com.zc.business.mapper.DcHolidaysMapper;
import com.zc.business.service.IDcHolidaysService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
/**
* 节假日 基础数据
Service业务层处理
*
* @author ruoyi
* @date 2024-06-18
*/
@Service
public class DcHolidaysServiceImpl implements IDcHolidaysService
{
@Autowired
private DcHolidaysMapper dcHolidaysMapper;
/**
* 查询节假日 基础数据
*
* @param id 节假日 基础数据
主键
* @return 节假日 基础数据
*/
@Override
public DcHolidays selectDcHolidaysById(Long id)
{
return dcHolidaysMapper.selectDcHolidaysById(id);
}
/**
* 查询节假日 基础数据
列表
*
* @param dcHolidays 节假日 基础数据
* @return 节假日 基础数据
*/
@Override
public List<DcHolidays> selectDcHolidaysList(DcHolidays dcHolidays)
{
return dcHolidaysMapper.selectDcHolidaysList(dcHolidays);
}
/**
* 新增节假日 基础数据
*
* @param dcHolidays 节假日 基础数据
* @return 结果
*/
@Override
public int insertDcHolidays(DcHolidays dcHolidays)
{
dcHolidays.setCreateTime(DateUtils.getNowDate());
return dcHolidaysMapper.insertDcHolidays(dcHolidays);
}
/**
* 修改节假日 基础数据
*
* @param dcHolidays 节假日 基础数据
* @return 结果
*/
@Override
public int updateDcHolidays(DcHolidays dcHolidays)
{
dcHolidays.setUpdateTime(DateUtils.getNowDate());
return dcHolidaysMapper.updateDcHolidays(dcHolidays);
}
/**
* 批量删除节假日 基础数据
*
* @param ids 需要删除的节假日 基础数据
主键
* @return 结果
*/
@Override
public int deleteDcHolidaysByIds(Long[] ids)
{
return dcHolidaysMapper.deleteDcHolidaysByIds(ids);
}
/**
* 删除节假日 基础数据
信息
*
* @param id 节假日 基础数据
主键
* @return 结果
*/
@Override
public int deleteDcHolidaysById(Long id)
{
return dcHolidaysMapper.deleteDcHolidaysById(id);
}
@Override
public int updateDcHoliday(DcHolidays dcHolidays) {
dcHolidays.setUpdateTime(DateUtils.getNowDate());
return dcHolidaysMapper.updateDcHoliday(dcHolidays);
}
@Override
public DcHolidays selectDcHolidaysListNameByDate(int date, String name) {
return dcHolidaysMapper.selectDcHolidaysListNameByDate(date,name);
}
}

8
zc-business/src/main/java/com/zc/business/service/impl/DcTollStationStatisticsDataImpl.java

@ -53,6 +53,8 @@ public class DcTollStationStatisticsDataImpl extends ServiceImpl<DcTollStationSt
@Resource
private ThreadPoolTaskExecutor threadPoolTaskExecutor;
@Resource
private DcTollStationStatisticsDataMapper dcTollStationStatisticsDataMapper;
/**
* 初始化方法用于在对象创建后恢复各种周期的交通收费站站点缓存
@ -231,6 +233,11 @@ public class DcTollStationStatisticsDataImpl extends ServiceImpl<DcTollStationSt
}
@Override
public List<DcTollStationStatisticsData> TollBoothStatistics(String startDate, String accessType, String periodType) {
return dcTollStationStatisticsDataMapper.TollBoothStatistics(startDate,accessType,periodType);
}
/**
* 恢复日缓存数据的方法获取当月收费站站点入口和出口数据
* 该方法首先会获取当前月份的收费站站点入口和出口数据
@ -294,4 +301,5 @@ public class DcTollStationStatisticsDataImpl extends ServiceImpl<DcTollStationSt
}
}

43
zc-business/src/main/java/com/zc/business/service/impl/DcTrafficStatisticsServiceImpl.java

@ -1,19 +1,21 @@
package com.zc.business.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.date.DateUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.zc.business.domain.*;
import com.zc.business.enums.ChannelCongestionLevelEnum;
import com.ruoyi.common.core.redis.RedisCache;
import com.ruoyi.common.utils.spring.SpringUtils;
import com.zc.business.constant.RedisKeyConstants;
import com.zc.business.domain.DcCongestionSection;
import com.zc.business.domain.DcFacility;
import com.zc.business.domain.DcRoadSection;
import com.zc.business.domain.DcRoadSectionCongestion;
import com.zc.business.enums.StakeMarkRange;
import com.zc.business.enums.TrafficCompositionRateEnum;
import com.zc.business.service.IDcFacilityService;
import com.zc.business.service.IDcRoadSectionService;
import com.zc.business.service.IDcTrafficStatisticsService;
import com.zc.business.statistics.cache.metrics.DailyGantryMetricsStatisticsCache;
import com.zc.business.utils.StakeMarkUtils;
import com.zc.common.core.httpclient.OkHttp;
import com.zc.common.core.httpclient.exception.HttpException;
@ -24,7 +26,6 @@ import okhttp3.Response;
import okhttp3.ResponseBody;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service;
import javax.annotation.PostConstruct;
@ -32,6 +33,7 @@ import javax.annotation.Resource;
import java.io.IOException;
import java.time.LocalTime;
import java.util.*;
import java.util.concurrent.TimeUnit;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@ -42,7 +44,6 @@ public class DcTrafficStatisticsServiceImpl implements IDcTrafficStatisticsServi
protected final Logger logger = LoggerFactory.getLogger(this.getClass());
// 智慧高速平台token
private JSONObject token = null;
private final String sysid = "sdgs_it_hs_jihe";
private final String baseUrl = "http://10.166.139.16:8080";
@ -50,6 +51,7 @@ public class DcTrafficStatisticsServiceImpl implements IDcTrafficStatisticsServi
@Resource
private IDcFacilityService facilityService;
@Resource
private IDcRoadSectionService roadSectionService;
@ -70,7 +72,7 @@ public class DcTrafficStatisticsServiceImpl implements IDcTrafficStatisticsServi
* 2. 使用POST方法向指定URL发送请求以获取新的访问令牌
* 3. 在请求成功时解析响应体中的令牌信息并更新本地存储的令牌
*/
@Scheduled(cron = "0 0 */5 * * ?")
//@Scheduled(cron = "0 0 */5 * * ?")
public void refreshAccessToken() {
OkHttp okHttp = new OkHttp();
try {
@ -79,7 +81,8 @@ public class DcTrafficStatisticsServiceImpl implements IDcTrafficStatisticsServi
.post(new Callback() {
// 请求失败时的回调处理,此处未实现具体逻辑
@Override
public void onFailure(Call call, IOException e) {}
public void onFailure(Call call, IOException e) {
}
// 请求成功时的回调处理
@Override
@ -87,7 +90,11 @@ public class DcTrafficStatisticsServiceImpl implements IDcTrafficStatisticsServi
try {
// 判断响应体是否非空,非空则解析令牌信息
if (response.body() != null) {
token = JSON.parseObject(response.body().string());
RedisCache redisCache = SpringUtils.getBean(RedisCache.class);
JSONObject token = JSON.parseObject(response.body().string());
redisCache.setCacheObject(RedisKeyConstants.TRAFFIC_FLOW, token.getString("token_type") + " " + token.getString("access_token"), token.getInteger("expires_in"), TimeUnit.SECONDS);
}
} catch (IOException e) {
// 解析异常转为运行时异常抛出
@ -111,14 +118,19 @@ public class DcTrafficStatisticsServiceImpl implements IDcTrafficStatisticsServi
*
* @return 如果存在有效的token则返回构建的访问令牌字符串包括token类型和访问令牌如果不存在有效的token则返回null
*/
public String getAccessToken() {
RedisCache redisCache = SpringUtils.getBean(RedisCache.class);
String token = redisCache.getCacheObject(RedisKeyConstants.TRAFFIC_FLOW);
// 检查token是否存在
if (token != null) {
if (token == null) {
// 组合并返回token类型和访问令牌
return token.getString("token_type") + " " + token.getString("access_token");
refreshAccessToken();
token = redisCache.getCacheObject(RedisKeyConstants.TRAFFIC_FLOW);
}
// 如果token不存在,返回null
return null;
return token;
}
/**
@ -607,6 +619,7 @@ public class DcTrafficStatisticsServiceImpl implements IDcTrafficStatisticsServi
requestParams.put("parameters", parameters.toJSONString());
Map<String, String> headers = new HashMap<>();
headers.put("Authorization", getAccessToken());
Response response // 请求响应
@ -719,6 +732,7 @@ public class DcTrafficStatisticsServiceImpl implements IDcTrafficStatisticsServi
.post(); // 请求方法
ResponseBody body = response.body();
if (body != null) {
JSONArray jsonArray = JSON.parseArray(body.string());
// 获取当前时间
LocalTime now = LocalTime.now();
@ -792,6 +806,7 @@ public class DcTrafficStatisticsServiceImpl implements IDcTrafficStatisticsServi
return "N/A";
}
}
public static String getDescriptionByIdentification(int identification) {
for (StakeMarkRange range : StakeMarkRange.values()) {
if (range.getIdentification() == identification) {
@ -800,6 +815,7 @@ public class DcTrafficStatisticsServiceImpl implements IDcTrafficStatisticsServi
}
return "";
}
/*
public JSONArray realTimeTrafficFlowHour2(String startDate,Long direction) throws HttpException, IOException {
OkHttp okHttp = new OkHttp();
@ -864,5 +880,6 @@ public class DcTrafficStatisticsServiceImpl implements IDcTrafficStatisticsServi
return null;
}
*/
}

1
zc-business/src/main/resources/mapper/business/DcEventTrafficControlMapper.xml

@ -41,6 +41,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
dc_event_traffic_control.limited_type as limited_type,
dc_event_traffic_control.vehicle_type as vehicle_type,
dc_event_traffic_control.measure as measure,
dc_event_traffic_control.cause_type as cause_type,
dc_facility.other_config as other_config,
dc_facility.remark as remark,
dc_facility.stake_mark as stake_mark,

90
zc-business/src/main/resources/mapper/business/DcHolidaysMapper.xml

@ -0,0 +1,90 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.zc.business.mapper.DcHolidaysMapper">
<resultMap type="com.zc.business.domain.DcHolidays" id="DcHolidaysResult">
<result property="name" column="name" />
<result property="vacation" column="vacation" />
<result property="date" column="date" />
<result property="createTime" column="create_time" />
<result property="updateTime" column="update_time" />
<result property="id" column="id" />
</resultMap>
<sql id="selectDcHolidaysVo">
select name, vacation, date, create_time, update_time, id from dc_holidays
</sql>
<select id="selectDcHolidaysList" parameterType="DcHolidays" resultMap="DcHolidaysResult">
<include refid="selectDcHolidaysVo"/>
<where>
<if test="name != null and name != ''"> and name like concat('%', #{name}, '%')</if>
<if test="vacation != null and vacation != ''"> and vacation = #{vacation}</if>
<if test="date != null "> and date = #{date}</if>
</where>
</select>
<select id="selectDcHolidaysById" parameterType="Long" resultMap="DcHolidaysResult">
<include refid="selectDcHolidaysVo"/>
where id = #{id}
</select>
<select id="selectDcHolidaysListNameByDate" resultMap="DcHolidaysResult">
<include refid="selectDcHolidaysVo"/>
where date= #{date} and name =#{name}
</select>
<insert id="insertDcHolidays" parameterType="DcHolidays" useGeneratedKeys="true" keyProperty="id">
insert into dc_holidays
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="name != null">name,</if>
<if test="vacation != null">vacation,</if>
<if test="date != null">date,</if>
<if test="createTime != null">create_time,</if>
<if test="updateTime != null">update_time,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="name != null">#{name},</if>
<if test="vacation != null">#{vacation},</if>
<if test="date != null">#{date},</if>
<if test="createTime != null">#{createTime},</if>
<if test="updateTime != null">#{updateTime},</if>
</trim>
</insert>
<update id="updateDcHolidays" parameterType="DcHolidays">
update dc_holidays
<trim prefix="SET" suffixOverrides=",">
<if test="name != null">name = #{name},</if>
<if test="vacation != null">vacation = #{vacation},</if>
<if test="date != null">date = #{date},</if>
<if test="createTime != null">create_time = #{createTime},</if>
<if test="updateTime != null">update_time = #{updateTime},</if>
</trim>
where id = #{id}
</update>
<update id="updateDcHoliday" parameterType="DcHolidays">
update dc_holidays
<trim prefix="SET" suffixOverrides=",">
<if test="name != null">name = #{name},</if>
<if test="vacation != null">vacation = #{vacation},</if>
<if test="date != null">date = #{date},</if>
<if test="createTime != null">create_time = #{createTime},</if>
<if test="updateTime != null">update_time = #{updateTime},</if>
</trim>
where name = #{name} and date =#{date}
</update>
<delete id="deleteDcHolidaysById" parameterType="Long">
delete from dc_holidays where id = #{id}
</delete>
<delete id="deleteDcHolidaysByIds" parameterType="String">
delete from dc_holidays where id in
<foreach item="id" collection="array" open="(" separator="," close=")">
#{id}
</foreach>
</delete>
</mapper>

33
zc-business/src/main/resources/mapper/business/DcTollStationStatisticsDataMapper.xml

@ -3,7 +3,15 @@
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.zc.business.mapper.DcTollStationStatisticsDataMapper">
<resultMap type="map" id="countMap">
<result property="id" column="id"/>
<result property="facilityName" column="facility_name"/>
<result property="toll_station_code" column="toll_station_code"/>
<result property="traffic_volume" column="traffic_volume"/>
<result property="period_type" column="period_type"/>
<result property="access_type" column="access_type"/>
<result property="statisticalDate" column="statisticalDate"/>
</resultMap>
<!-- 插入或更新交通路段数据 -->
<insert id="insertOrUpdate" parameterType="com.zc.business.domain.DcTollStationStatisticsData">
INSERT INTO
@ -91,4 +99,27 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
dc_toll_station_statistics_data
</select>
<select id="TollBoothStatistics" resultMap="countMap" resultType="map" >
SELECT
fa.facility_name,
fa.stake_mark,
dt.id,
dt.access_type,
dt.period_type,
dt.traffic_volume,
dt.toll_station_code,
dt.statistical_date
FROM
dc_facility AS fa
LEFT JOIN
dc_toll_station_statistics_data AS dt
ON
fa.facility_code = dt.toll_station_code
AND DATE(dt.statistical_date) = DATE(#{startDate})
AND dt.period_type = #{periodType}
AND dt.access_type = #{accessType}
WHERE fa.facility_type = 1
</select>
</mapper>

8
zc-business/src/main/resources/mapper/business/DcTrafficIncidentsMapper.xml

@ -257,14 +257,13 @@
<select id="selectTollStationAnalysisByFacility" resultType="java.util.Map">
SELECT t1.id,t1.facility_name facilityName,IFNULL(t2.facilityClose,0) facilityClose,
IFNULL(t2.facilityInterval,0) facilityInterval,IFNULL(t2.facilityRestriction,0) facilityRestriction
IFNULL(t2.facilityRestriction,0) facilityRestriction
from dc_facility t1
LEFT JOIN
(select
t2.facility_id facilityId,t3.facility_name facilityName,classify,
SUM(case when t2.classify = '6' then 1 else 0 end) facilityClose,
SUM(case when t2.classify = '7' then 1 else 0 end) facilityRestriction,
SUM(case when t2.classify = '9' then 1 else 0 end) facilityInterval
SUM(case when t2.control_type = '1' then 1 else 0 end) facilityClose,
SUM(case when t2.control_type = '2' then 1 else 0 end) facilityRestriction
from dc_event t1
LEFT JOIN dc_event_traffic_control t2 on t1.id = t2.id
LEFT JOIN dc_facility t3 on t3.id = t2.facility_id
@ -272,7 +271,6 @@
t1.event_type = '3' and t1.event_subclass = '3-2' and t1.event_state != '0'
and date_format(t1.start_time,'%Y-%m-%d %H:%i:%s') &lt;= date_format(#{endTime},'%Y-%m-%d %H:%i:%s')
and (date_format(t1.end_time,'%Y-%m-%d %H:%i:%s') > date_format(#{startTime},'%Y-%m-%d %H:%i:%s') or ISNULL(t1.end_time))
and t2.classify in ('6','7','9')
GROUP BY t2.facility_id) t2 on t1.id = t2.facilityId
<where>
t1.facility_type = '1'

Loading…
Cancel
Save