From 654e39dd20c84aed6cb409c177159aef710f1f42 Mon Sep 17 00:00:00 2001 From: zhaoxianglong Date: Wed, 19 Jun 2024 09:01:57 +0800 Subject: [PATCH 01/11] =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=97=A0=E6=A1=A9?= =?UTF-8?q?=E5=8F=B7=E9=A2=84=E8=AD=A6controller?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../zc/business/controller/DcNoStakeWarningTableController.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/zc-business/src/main/java/com/zc/business/controller/DcNoStakeWarningTableController.java b/zc-business/src/main/java/com/zc/business/controller/DcNoStakeWarningTableController.java index c35c3160..2e5c07fa 100644 --- a/zc-business/src/main/java/com/zc/business/controller/DcNoStakeWarningTableController.java +++ b/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; From c82b39455abaf22c28d725c8c685e8cff915083f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E5=85=B4=E7=90=B3?= <1911390090@qq.com> Date: Wed, 19 Jun 2024 10:08:32 +0800 Subject: [PATCH 02/11] =?UTF-8?q?=E4=BA=8B=E4=BB=B6=E5=AD=90=E7=B1=BB?= =?UTF-8?q?=E6=9E=9A=E4=B8=BE=2010-3=20=E9=9B=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/zc/business/enums/EventSubclassEnum.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/zc-business/src/main/java/com/zc/business/enums/EventSubclassEnum.java b/zc-business/src/main/java/com/zc/business/enums/EventSubclassEnum.java index 68e8059b..01eb7af9 100644 --- a/zc-business/src/main/java/com/zc/business/enums/EventSubclassEnum.java +++ b/zc-business/src/main/java/com/zc/business/enums/EventSubclassEnum.java @@ -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", "路面积雪","路面积雪请谨慎驾驶"), From 45308c9f8e94b65eb574b093310510bdbb16bfe9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E5=85=B4=E7=90=B3?= <1911390090@qq.com> Date: Wed, 19 Jun 2024 11:29:30 +0800 Subject: [PATCH 03/11] =?UTF-8?q?=E5=8E=8B=E8=BD=A6(=E5=85=AC=E9=87=8C)=20?= =?UTF-8?q?=E6=94=B9=E4=B8=BAFloat?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/zc/business/domain/DcEventVehicleAccident.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/zc-business/src/main/java/com/zc/business/domain/DcEventVehicleAccident.java b/zc-business/src/main/java/com/zc/business/domain/DcEventVehicleAccident.java index 25461bb3..a290ec73 100644 --- a/zc-business/src/main/java/com/zc/business/domain/DcEventVehicleAccident.java +++ b/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-晴 From 699b5fadc595f0b92a435c95a6f583aa2cfcf7f1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E5=85=B4=E7=90=B3?= <1911390090@qq.com> Date: Wed, 19 Jun 2024 16:43:21 +0800 Subject: [PATCH 04/11] =?UTF-8?q?=E4=BA=A4=E9=80=9A=E6=B5=81=E9=A2=84?= =?UTF-8?q?=E8=AD=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- zc-business/pom.xml | 6 + .../controller/DcHolidaysController.java | 113 ++++++++++++++++ .../controller/DcTrafficFlowWarning.java | 111 ++++++++++++++++ .../controller/DcTrafficFlowWarningDate.java | 98 ++++++++++++++ .../zc/business/controller/FTPDeletion.java | 112 ++++++++++++++++ .../com/zc/business/domain/DcHolidays.java | 82 ++++++++++++ .../zc/business/mapper/DcHolidaysMapper.java | 81 ++++++++++++ .../business/service/IDcHolidaysService.java | 81 ++++++++++++ .../service/impl/DcHolidaysServiceImpl.java | 123 ++++++++++++++++++ .../mapper/business/DcHolidaysMapper.xml | 90 +++++++++++++ 10 files changed, 897 insertions(+) create mode 100644 zc-business/src/main/java/com/zc/business/controller/DcHolidaysController.java create mode 100644 zc-business/src/main/java/com/zc/business/controller/DcTrafficFlowWarning.java create mode 100644 zc-business/src/main/java/com/zc/business/controller/DcTrafficFlowWarningDate.java create mode 100644 zc-business/src/main/java/com/zc/business/controller/FTPDeletion.java create mode 100644 zc-business/src/main/java/com/zc/business/domain/DcHolidays.java create mode 100644 zc-business/src/main/java/com/zc/business/mapper/DcHolidaysMapper.java create mode 100644 zc-business/src/main/java/com/zc/business/service/IDcHolidaysService.java create mode 100644 zc-business/src/main/java/com/zc/business/service/impl/DcHolidaysServiceImpl.java create mode 100644 zc-business/src/main/resources/mapper/business/DcHolidaysMapper.xml diff --git a/zc-business/pom.xml b/zc-business/pom.xml index b185377e..d612ab2e 100644 --- a/zc-business/pom.xml +++ b/zc-business/pom.xml @@ -21,6 +21,12 @@ org.eclipse.paho.client.mqttv3 1.2.2 + + + commons-net + commons-net + 3.8.0 + org.json json diff --git a/zc-business/src/main/java/com/zc/business/controller/DcHolidaysController.java b/zc-business/src/main/java/com/zc/business/controller/DcHolidaysController.java new file mode 100644 index 00000000..7c878c5c --- /dev/null +++ b/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 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 list = dcHolidaysService.selectDcHolidaysList(dcHolidays); + ExcelUtil 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)); + } +} diff --git a/zc-business/src/main/java/com/zc/business/controller/DcTrafficFlowWarning.java b/zc-business/src/main/java/com/zc/business/controller/DcTrafficFlowWarning.java new file mode 100644 index 00000000..ac4f9484 --- /dev/null +++ b/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 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>>> mapListOne = new HashMap<>(); + + Map>> map = new HashMap<>(); + Map>> map2 = new HashMap<>(); + for (int i1 = 0; i1 < date.length; i1++) { + List> mapList = dcGantryStatisticsDataService.realTimeTrafficFlow( date[i1],"1","4"); + List> 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 contentMap = new HashMap<>(); + contentMap.put("content",name +"交通流数据预警提醒"); + contentMap.put("trafficFlowDataEarlyWarning",jsonString); + WebSocketService.broadcast("trafficFlowDataEarlyWarning", contentMap); + + // 打印JSON字符串 + System.out.println(jsonString.length()); + + } + } + } +} diff --git a/zc-business/src/main/java/com/zc/business/controller/DcTrafficFlowWarningDate.java b/zc-business/src/main/java/com/zc/business/controller/DcTrafficFlowWarningDate.java new file mode 100644 index 00000000..3ee0c3e3 --- /dev/null +++ b/zc-business/src/main/java/com/zc/business/controller/DcTrafficFlowWarningDate.java @@ -0,0 +1,98 @@ +package com.zc.business.controller; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +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; + + //@Scheduled(cron = "0/10 * * * * ?") + public void yearPriorToAcquisition() { + + try { + String apiKey = "00b26cbc2cb242283452ac5c842e81d1"; // 替换为你的API密钥 + // 获取当前日期 + 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 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(); + } + } +} diff --git a/zc-business/src/main/java/com/zc/business/controller/FTPDeletion.java b/zc-business/src/main/java/com/zc/business/controller/FTPDeletion.java new file mode 100644 index 00000000..b828ba4a --- /dev/null +++ b/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(); + } + } + + +} \ No newline at end of file diff --git a/zc-business/src/main/java/com/zc/business/domain/DcHolidays.java b/zc-business/src/main/java/com/zc/business/domain/DcHolidays.java new file mode 100644 index 00000000..f9f99e85 --- /dev/null +++ b/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(); + } +} diff --git a/zc-business/src/main/java/com/zc/business/mapper/DcHolidaysMapper.java b/zc-business/src/main/java/com/zc/business/mapper/DcHolidaysMapper.java new file mode 100644 index 00000000..b7752e58 --- /dev/null +++ b/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 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); +} diff --git a/zc-business/src/main/java/com/zc/business/service/IDcHolidaysService.java b/zc-business/src/main/java/com/zc/business/service/IDcHolidaysService.java new file mode 100644 index 00000000..ba8fb9ed --- /dev/null +++ b/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 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); +} diff --git a/zc-business/src/main/java/com/zc/business/service/impl/DcHolidaysServiceImpl.java b/zc-business/src/main/java/com/zc/business/service/impl/DcHolidaysServiceImpl.java new file mode 100644 index 00000000..b91cd863 --- /dev/null +++ b/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 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); + } +} diff --git a/zc-business/src/main/resources/mapper/business/DcHolidaysMapper.xml b/zc-business/src/main/resources/mapper/business/DcHolidaysMapper.xml new file mode 100644 index 00000000..faf1e111 --- /dev/null +++ b/zc-business/src/main/resources/mapper/business/DcHolidaysMapper.xml @@ -0,0 +1,90 @@ + + + + + + + + + + + + + + + select name, vacation, date, create_time, update_time, id from dc_holidays + + + + + + + + + + insert into dc_holidays + + name, + vacation, + date, + create_time, + update_time, + + + #{name}, + #{vacation}, + #{date}, + #{createTime}, + #{updateTime}, + + + + + update dc_holidays + + name = #{name}, + vacation = #{vacation}, + date = #{date}, + create_time = #{createTime}, + update_time = #{updateTime}, + + where id = #{id} + + + update dc_holidays + + name = #{name}, + vacation = #{vacation}, + date = #{date}, + create_time = #{createTime}, + update_time = #{updateTime}, + + where name = #{name} and date =#{date} + + + + delete from dc_holidays where id = #{id} + + + + delete from dc_holidays where id in + + #{id} + + + \ No newline at end of file From ece2cdd61f76f870dc808afcfe72b6070d19dd24 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E5=85=B4=E7=90=B3?= <1911390090@qq.com> Date: Thu, 20 Jun 2024 09:57:22 +0800 Subject: [PATCH 05/11] =?UTF-8?q?=E4=BA=A4=E9=80=9A=E7=AE=A1=E5=88=B6-?= =?UTF-8?q?=E5=8E=9F=E5=9B=A0=E7=B1=BB=E5=9E=8B=20=E5=8F=82=E6=95=B0?= =?UTF-8?q?=E6=9C=AA=E8=BF=94=E5=9B=9E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../resources/mapper/business/DcEventTrafficControlMapper.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/zc-business/src/main/resources/mapper/business/DcEventTrafficControlMapper.xml b/zc-business/src/main/resources/mapper/business/DcEventTrafficControlMapper.xml index 06cf12f4..7dd11fc8 100644 --- a/zc-business/src/main/resources/mapper/business/DcEventTrafficControlMapper.xml +++ b/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, From e805e2ce3283d9dc721da0c49fc9b981e75b0d7c Mon Sep 17 00:00:00 2001 From: "Mr.Wang" Date: Thu, 20 Jun 2024 11:36:24 +0800 Subject: [PATCH 06/11] =?UTF-8?q?=E7=9B=B8=E6=9C=BA=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E9=A2=84=E7=BD=AE=E4=BD=8D=E5=88=97=E8=A1=A8?= =?UTF-8?q?=E3=80=81=E6=96=B0=E5=A2=9E=E9=A2=84=E7=BD=AE=E4=BD=8D=E6=93=8D?= =?UTF-8?q?=E4=BD=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../business/controller/VideoController.java | 153 +++++++++++------- 1 file changed, 94 insertions(+), 59 deletions(-) diff --git a/zc-business/src/main/java/com/zc/business/controller/VideoController.java b/zc-business/src/main/java/com/zc/business/controller/VideoController.java index 35152f2c..8cdba975 100644 --- a/zc-business/src/main/java/com/zc/business/controller/VideoController.java +++ b/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 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 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 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); } /** From ceadb9f9e26d82af9e9454b1db57b34ba56ee462 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E5=85=B4=E7=90=B3?= <1911390090@qq.com> Date: Thu, 20 Jun 2024 13:49:19 +0800 Subject: [PATCH 07/11] =?UTF-8?q?=E8=87=AA=E7=84=B6-=E8=87=AA=E7=87=83=20?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=20=20=20=E4=BA=8B=E4=BB=B6=E6=8E=A8=E9=80=81?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/zc/business/domain/DcEvent.java | 2 +- .../zc/business/enums/EventSubclassEnum.java | 2 +- .../com/zc/business/enums/ValueConverter.java | 2 +- .../service/impl/DcEventServiceImpl.java | 17 +++++++++++------ 4 files changed, 14 insertions(+), 9 deletions(-) diff --git a/zc-business/src/main/java/com/zc/business/domain/DcEvent.java b/zc-business/src/main/java/com/zc/business/domain/DcEvent.java index 8c626a5f..b251bbe9 100644 --- a/zc-business/src/main/java/com/zc/business/domain/DcEvent.java +++ b/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; /** diff --git a/zc-business/src/main/java/com/zc/business/enums/EventSubclassEnum.java b/zc-business/src/main/java/com/zc/business/enums/EventSubclassEnum.java index 01eb7af9..a30c7bec 100644 --- a/zc-business/src/main/java/com/zc/business/enums/EventSubclassEnum.java +++ b/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", "主线封闭和限行","前方*主线封闭和限行"), diff --git a/zc-business/src/main/java/com/zc/business/enums/ValueConverter.java b/zc-business/src/main/java/com/zc/business/enums/ValueConverter.java index bc082126..d539ef4a 100644 --- a/zc-business/src/main/java/com/zc/business/enums/ValueConverter.java +++ b/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","主线封闭和限行"); diff --git a/zc-business/src/main/java/com/zc/business/service/impl/DcEventServiceImpl.java b/zc-business/src/main/java/com/zc/business/service/impl/DcEventServiceImpl.java index f0b72f28..9d9db46a 100644 --- a/zc-business/src/main/java/com/zc/business/service/impl/DcEventServiceImpl.java +++ b/zc-business/src/main/java/com/zc/business/service/impl/DcEventServiceImpl.java @@ -216,9 +216,9 @@ public class DcEventServiceImpl extends ServiceImpl 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 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 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 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 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 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);//直接确认 From 8d6d0ecf3a172d863dace0e0d0178424ca4a93a2 Mon Sep 17 00:00:00 2001 From: lau572 <1010031226@qq.com> Date: Thu, 20 Jun 2024 13:54:23 +0800 Subject: [PATCH 08/11] =?UTF-8?q?=E6=94=B6=E8=B4=B9=E7=AB=99=E7=AE=A1?= =?UTF-8?q?=E5=88=B6=E7=BB=9F=E8=AE=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../resources/mapper/business/DcTrafficIncidentsMapper.xml | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/zc-business/src/main/resources/mapper/business/DcTrafficIncidentsMapper.xml b/zc-business/src/main/resources/mapper/business/DcTrafficIncidentsMapper.xml index a4dfb940..a7e4a42b 100644 --- a/zc-business/src/main/resources/mapper/business/DcTrafficIncidentsMapper.xml +++ b/zc-business/src/main/resources/mapper/business/DcTrafficIncidentsMapper.xml @@ -257,14 +257,13 @@ + + + From fccab5fa9f79140c41cbb94a3e4970e2ce429c3e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E5=85=B4=E7=90=B3?= <1911390090@qq.com> Date: Thu, 20 Jun 2024 18:51:43 +0800 Subject: [PATCH 11/11] =?UTF-8?q?=E4=BA=A4=E9=80=9A=E6=B5=81token=E5=AD=98?= =?UTF-8?q?=E5=85=A5token?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../business/constant/RedisKeyConstants.java | 4 ++ .../impl/DcTrafficStatisticsServiceImpl.java | 57 ++++++++++++------- 2 files changed, 40 insertions(+), 21 deletions(-) diff --git a/zc-business/src/main/java/com/zc/business/constant/RedisKeyConstants.java b/zc-business/src/main/java/com/zc/business/constant/RedisKeyConstants.java index cddabc1c..cd29ee5e 100644 --- a/zc-business/src/main/java/com/zc/business/constant/RedisKeyConstants.java +++ b/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"; } diff --git a/zc-business/src/main/java/com/zc/business/service/impl/DcTrafficStatisticsServiceImpl.java b/zc-business/src/main/java/com/zc/business/service/impl/DcTrafficStatisticsServiceImpl.java index f487742f..44374b7c 100644 --- a/zc-business/src/main/java/com/zc/business/service/impl/DcTrafficStatisticsServiceImpl.java +++ b/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; } /** @@ -267,13 +279,13 @@ public class DcTrafficStatisticsServiceImpl implements IDcTrafficStatisticsServi * * @return List 当前路段拥堵情况列表 * @throws HttpException 抛出HttpException异常,当HTTP请求发生错误时。 - * @throws IOException 抛出IOException异常,当发生输入/输出错误时。 + * @throws IOException 抛出IOException异常,当发生输入/输出错误时。 */ @Override public List currentSectionCongested() throws HttpException, IOException { // 调用方法获取当前拥堵事件信息 - JSONArray currentEventCongested = currentEventCongested(); + JSONArray currentEventCongested = currentEventCongested(); // 如果没有拥堵事件,则直接返回空列表 if (currentEventCongested == null || currentEventCongested.isEmpty()) { @@ -297,7 +309,7 @@ public class DcTrafficStatisticsServiceImpl implements IDcTrafficStatisticsServi dcRoadSectionCongestion.setDownCongestionSections(new ArrayList<>()); // 遍历当前拥堵事件,计算每个路段的拥堵情况 - for (Object object :currentEventCongested) { + for (Object object : currentEventCongested) { if (object instanceof JSONObject) { JSONObject jsonObject = (JSONObject) object; calculateSectionCongestion(jsonObject, dcRoadSectionCongestion); @@ -315,10 +327,10 @@ public class DcTrafficStatisticsServiceImpl implements IDcTrafficStatisticsServi /** * 根据给定的JSON对象计算路段的拥堵情况。 * - * @param jsonObject 包含拥堵信息的JSON对象,包括拥堵开始桩号、结束桩号和拥堵距离。 + * @param jsonObject 包含拥堵信息的JSON对象,包括拥堵开始桩号、结束桩号和拥堵距离。 * @param dcRoadSectionCongestion 包含路段基本信息和拥堵情况的对象,需要根据计算结果更新拥堵信息。 */ - private void calculateSectionCongestion(JSONObject jsonObject, DcRoadSectionCongestion dcRoadSectionCongestion){ + private void calculateSectionCongestion(JSONObject jsonObject, DcRoadSectionCongestion dcRoadSectionCongestion) { // 根据方向,计算对应方向的路段拥堵情况 String dirCode = jsonObject.getString("dir_code"); @@ -408,7 +420,7 @@ public class DcTrafficStatisticsServiceImpl implements IDcTrafficStatisticsServi // 路段包含结束拥堵桩号不包含开始拥堵桩号 if (endPileNo >= startStakeMark && endPileNo <= endStakeMark && startPileNo <= startStakeMark) { congestionSection.setCongestionStartStakeMark(startStakeMark); - congestionSection.setCongestionEndStakeMark((int)endPileNo); + congestionSection.setCongestionEndStakeMark((int) endPileNo); congestionSection.setCongestionDistance((endStakeMark - startStakeMark)); congestionSections.add(congestionSection); @@ -510,7 +522,7 @@ public class DcTrafficStatisticsServiceImpl implements IDcTrafficStatisticsServi * 获取门架指标数据 * * @param startTime 开始时间 - * @param endTime 结束时间 + * @param endTime 结束时间 */ @Override public JSONArray gantryMetrics(String startTime, String endTime) throws HttpException, IOException { @@ -607,6 +619,7 @@ public class DcTrafficStatisticsServiceImpl implements IDcTrafficStatisticsServi requestParams.put("parameters", parameters.toJSONString()); Map headers = new HashMap<>(); + headers.put("Authorization", getAccessToken()); Response response // 请求响应 @@ -692,7 +705,7 @@ public class DcTrafficStatisticsServiceImpl implements IDcTrafficStatisticsServi } @Override - public List> realTimeTrafficFlowHour(String startDate,Long direction) throws HttpException, IOException { + public List> realTimeTrafficFlowHour(String startDate, Long direction) throws HttpException, IOException { OkHttp okHttp = new OkHttp(); RequestParams requestParams = new RequestParams(); @@ -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) {