From b9a58b24e011f5f2cfabe1fd999371b99ad6622b Mon Sep 17 00:00:00 2001 From: BianLzhaoMin <11485688+bianliangzhaomin123@user.noreply.gitee.com> Date: Thu, 24 Apr 2025 15:57:25 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E7=94=B5=E5=AD=90=E7=9C=8B=E6=9D=BF?= =?UTF-8?q?=E9=A1=B5=E9=9D=A2=E6=90=AD=E5=BB=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../css/synthesisQuery/digitalSignage.css | 138 ++++- .../js/synthesisQuery/digitalSignage.js | 503 +++++++++++++++++- .../pages/synthesisQuery/digitalSignage.html | 30 ++ 3 files changed, 662 insertions(+), 9 deletions(-) diff --git a/src/main/resources/static/css/synthesisQuery/digitalSignage.css b/src/main/resources/static/css/synthesisQuery/digitalSignage.css index adc6b1c..2345732 100644 --- a/src/main/resources/static/css/synthesisQuery/digitalSignage.css +++ b/src/main/resources/static/css/synthesisQuery/digitalSignage.css @@ -42,7 +42,8 @@ body { } .scroll-box, -.legend-box { +.legend-box, +.right-drawer-box { position: absolute; background: rgba(0, 0, 0, 0.5); color: #fff; @@ -136,3 +137,138 @@ body { width: 18px; height: 18px; } + +.map-container { + background: rgba(0, 0, 0, 0.5); + color: white; + padding: 10px; + border-radius: 4px; + box-shadow: 0 2px 6px 0 rgba(0, 0, 0, 0.3); + /* min-width: 150px; */ + font-family: Arial, sans-serif; +} + +.map-container h4 { + margin: 0 0 8px 0; + font-size: 16px; + border-bottom: 1px solid rgba(255, 255, 255, 0.2); + padding-bottom: 5px; +} + +.map-container-item { + padding: 4px 6px; + display: flex; + align-items: center; + justify-content: space-between; + font-size: 14px; +} + +.map-container-item span:first-child { + width: 160px; +} +.map-container-item span:last-child { + min-width: 120px; + text-align: right; +} + +/* 索道信息窗口样式 */ +.map-container-item-ropeway span:first-child { + padding-left: 16px; +} +.map-container-item-ropeway span:last-child { + margin-left: 4px; + min-width: 120px; +} + +/* 交叉信息窗口样式 */ +.map-container-cross { + display: flex; +} +.map-container-cross .map-container-1 { + width: 260px; + padding: 10px; + border-radius: 0; + border-top-left-radius: 4px; + border-bottom-left-radius: 4px; + box-shadow: none; +} +.map-container-cross .map-container-2 { + width: 220px; + padding: 10px; + border-radius: 0; + border-top-right-radius: 4px; + border-bottom-right-radius: 4px; + box-shadow: none; +} + +.map-container-cross .map-container-2 h4 { + padding-left: 20px; +} + +/* 右侧抽屉 */ +.right-drawer-box { + top: 50%; + right: 0; + width: 400px; + height: 90%; + transform: translateY(-50%); + display: none; + box-shadow: -2px 0 10px rgba(0, 0, 0, 0.1); + transition: right 0.3s ease-in-out; +} + +/* 打开弹框的三角 */ +.open-drawer-box { + position: absolute; + top: 50%; + right: 0; + transform: translateY(-50%); + width: 0; + height: 0; + border-style: solid; + border-width: 20px 20px 20px 0; + border-color: transparent #d7d7d7 transparent transparent; + z-index: 999; + cursor: pointer; +} + +.close-drawer-btn { + position: absolute; + top: 50%; + left: 0; + transform: translateY(-50%); + width: 0; + height: 0; + border-style: solid; + border-width: 20px 0px 20px 20px; + border-color: transparent transparent transparent #d7d7d7; + z-index: 999; + cursor: pointer; +} + +/* 当抽屉打开时,隐藏三角按钮 */ +.right-drawer-box.open ~ .open-drawer-box { + display: none; +} + +.open { + display: block; +} + +.organization-tree-box { + padding: 20px; + height: calc(100% - 40px); + overflow-y: auto; +} + +.layui-tree-txt { + color: #fff !important; +} + +.layui-tree-icon .layui-icon { + color: #fff !important; +} + +.layui-tree-line .layui-tree-entry:hover .layui-tree-txt { + color: #dfd8d8 !important; +} diff --git a/src/main/resources/static/js/synthesisQuery/digitalSignage.js b/src/main/resources/static/js/synthesisQuery/digitalSignage.js index b7ec05b..8513b69 100644 --- a/src/main/resources/static/js/synthesisQuery/digitalSignage.js +++ b/src/main/resources/static/js/synthesisQuery/digitalSignage.js @@ -1,6 +1,405 @@ -const map = new BMapGL.Map("map-box"); // 创建Map实例 -map.centerAndZoom(new BMapGL.Point(116.404, 39.915), 11); // 初始化地图,设置中心点坐标和地图级别 -map.enableScrollWheelZoom(true); //开启鼠标滚轮缩放 +let map = null; + +// 地图配置项 +const config = { + points: [ + { + lng: 116.254, // 向西偏移 + lat: 39.965, // 向北偏移 + title: "点1", + type: 1, + isCompleted: true, // 是否完成 + isCrossing: false, // 是否跨越 + }, + { + lng: 116.263, // 保持适当距离 + lat: 39.972, + title: "点2", + type: 1, + isCompleted: true, // 是否完成 + isCrossing: false, // 是否跨越 + }, + { + lng: 116.275, // 平滑过渡 + lat: 39.958, + title: "点3", + type: 1, + isCompleted: true, // 是否完成 + isCrossing: false, // 是否跨越 + }, + { + lng: 116.285, // 继续向东 + lat: 39.945, + title: "点4", + type: 2, + isCompleted: true, // 是否完成 + isCrossing: false, // 是否跨越 + }, + { + lng: 116.298, // 向南偏移 + lat: 39.935, + title: "点5", + type: 2, + isCompleted: false, // 是否完成 + isCrossing: false, // 是否跨越 + }, + { + lng: 116.305, // 保持连贯性 + lat: 39.925, + title: "点6", + type: 2, + isCompleted: false, // 是否完成 + isCrossing: false, // 是否跨越 + }, + { + lng: 116.315, // 最终点 + lat: 39.915, + title: "点7", + type: 3, + isCompleted: false, // 是否完成 + isCrossing: true, // 是否跨越 + }, + { + lng: 116.325, // 最远点 + lat: 39.905, + title: "点8", + type: 9, + isCompleted: false, // 是否完成 + isCrossing: true, // 是否跨越 + }, + ], + polyline: { + strokeColor: "#3388ff", // 线条颜色 + strokeWeight: 3, // 线条宽度 + strokeOpacity: 0.8, // 透明度 + strokeStyle: "dashed", // solid(实线)或dashed(虚线) + enableEditing: false, // 是否可编辑 + enableClicking: true, // 是否可点击 + }, +}; + +// 百度地图初始化 +function initMap() { + map = new BMapGL.Map("map-box"); + // 以第一个点为中心初始化地图 + map.centerAndZoom( + new BMapGL.Point(config.points[0].lng, config.points[0].lat), + 11 + ); + map.enableScrollWheelZoom(true); + + map.setMapStyleV2({ + // styleJson: [ + // { + // featureType: "background", + // elementType: "geometry", + // stylers: { + // color: "#f5f5f5", // 浅灰色背景 + // }, + // }, + // { + // featureType: "road", + // elementType: "geometry", + // stylers: { + // visibility: "off", // 隐藏道路 + // }, + // }, + // ], + }); + // map.setMapType(BMAP_EARTH_MAP); // 地球模式 + // map.setDisplayOptions({ + // poiText: false, // 隐藏POI文字 + // poiIcon: false, // 隐藏POI图标 + // building: false, // 隐藏建筑物 + // }); + + // 添加地图控件(可选) + // map.addControl(new BMapGL.NavigationControl()); + // map.addControl(new BMapGL.ScaleControl()); + + // 地图加载完成后添加标点和折线 + map.addEventListener("tilesloaded", function () { + addAllMapPoints(); + addMapLine(); + }); +} + +// 添加标点 +function addAllMapPoints() { + // 清除地图上所有现有的标记 + map.clearOverlays(); + + const bounds = []; + const iconTypeList = { + 1: "/gzDigitalSignage/img/digitalSignage/yellow.png", + 2: "/gzDigitalSignage/img/digitalSignage/green.png", + 3: "/gzDigitalSignage/img/digitalSignage/blue.png", + 4: "/gzDigitalSignage/img/digitalSignage/orange.png", + 5: "/gzDigitalSignage/img/digitalSignage/zt_red.png", + 6: "/gzDigitalSignage/img/digitalSignage/zt_purple.png", + 7: "/gzDigitalSignage/img/digitalSignage/zt_green.png", + 8: "/gzDigitalSignage/img/digitalSignage/white.png", + 9: "/gzDigitalSignage/img/digitalSignage/sd.png", + }; + + // 使用对象记录已添加的点,避免重复 + const addedPoints = {}; + + config.points.forEach((pointData, index) => { + const pointKey = `${pointData.lng},${pointData.lat}`; + + // 如果该坐标点已经添加过标记,则跳过 + if (addedPoints[pointKey]) { + console.warn(`重复的点坐标被跳过: ${pointKey}`); + return; + } + + addedPoints[pointKey] = true; + const point = new BMapGL.Point(pointData.lng, pointData.lat); + bounds.push(point); + + // 检查图标是否存在,不存在则使用默认图标 + const iconUrl = iconTypeList[pointData.type] || iconTypeList[1]; // 默认使用第一个图标 + const myIcon = new BMapGL.Icon(iconUrl, new BMapGL.Size(30, 32), { + anchor: new BMapGL.Size(8, 35), // 修正锚点位置为中心底部 + imageSize: new BMapGL.Size(30, 32), // 与实际图片尺寸一致 + }); + + const marker = new BMapGL.Marker(point, { icon: myIcon }); + + // 添加信息窗口 + + let infoContent = ""; + + if (pointData.type === 9) { + // 索道 + infoContent = ` +
+

+ 索道运输 +

+
+ 索道位置 + 2025-04-24 +
+
+ 索道长度 + 2025-04-24 +
+
+ 最大载重 + 2025-04-24 +
+
+ 安全距离 + 2025-04-24 +
+
+ 最大坡度 + 2025-04-24 +
+
`; + } else if (pointData.isCrossing) { + // 交叉信息 + infoContent = ` +
+
+

+ ${pointData.title} +

+
+ 基础开挖 + 2025-04-24 +
+
+ 基础开挖完成 + 2025-04-24 +
+
+ 基础浇筑完成 + 2025-04-24 +
+
+ 铁塔组立 + 2025-04-24 +
+
+ 铁塔组立完成 + 2025-04-24 +
+
+ 架线施工完成 + 2025-04-24 +
+
+
+

+ 交叉跨越信息 ( ${pointData.title} ) +

+
+ 上层线路 + 550V宁安线 +
+
+ 下层线路 + 220V宁安线 +
+
+ 交叉角度 + 78.5° +
+
+ 垂直距离 + 12.8m +
+
+ 安全裕度 + 4.8m +
+
+
`; + } else { + // 普通信息 + infoContent = ` +
+

+ ${pointData.title} +

+
+ 基础开挖 + 2025-04-24 +
+
+ 基础开挖完成 + 2025-04-24 +
+
+ 基础浇筑完成 + 2025-04-24 +
+
+ 铁塔组立 + 2025-04-24 +
+
+ 铁塔组立完成 + 2025-04-24 +
+
+ 架线施工完成 + 2025-04-24 +
+
`; + } + + // 创建信息窗口,禁用默认样式 + const infoWindow = new BMapGL.InfoWindow(infoContent, { + width: 0, // 宽度设为0,让内容决定宽度 + height: 0, // 高度设为0,让内容决定高度 + offset: new BMapGL.Size(0, -20), // 调整偏移量 + enableAutoPan: true, // 自动平移地图 + enableCloseOnClick: true, // 点击地图不关闭 + }); + + marker.addEventListener("click", function () { + this.openInfoWindow(infoWindow); + + // 移除百度地图默认添加的三角箭头 + setTimeout(() => { + const infoWindowElements = + document.getElementsByClassName("BMap_bubble_pop"); + if (infoWindowElements.length > 0) { + const popup = infoWindowElements[0]; + // 移除箭头元素 + const arrows = + popup.getElementsByClassName("BMap_bubble_arrow"); + while (arrows[0]) { + arrows[0].parentNode.removeChild(arrows[0]); + } + // 移除百度地图添加的额外样式 + popup.style.background = "none"; + popup.style.border = "none"; + popup.style.boxShadow = "none"; + } + }, 50); + }); + + map.addOverlay(marker); + }); + + // 调整视野使所有点可见 + if (bounds.length > 0) { + map.setViewport(bounds); + } +} + +// 添加标点折线(智能绘制虚实线) +function addMapLine() { + if (config.points.length < 2) return; + + // 存储所有线段 + const segments = []; + + // 遍历点数组,创建线段 + for (let i = 0; i < config.points.length - 1; i++) { + const startPoint = config.points[i]; + const endPoint = config.points[i + 1]; + + // 判断两点是否都已完成 + const isSegmentCompleted = + startPoint.isCompleted && endPoint.isCompleted; + + // 创建线段点数组 + const segmentPoints = [ + new BMapGL.Point(startPoint.lng, startPoint.lat), + new BMapGL.Point(endPoint.lng, endPoint.lat), + ]; + + // 设置线段样式 + const segmentOptions = { + strokeColor: getSegmentColor(startPoint, endPoint), // 根据类型获取颜色 + strokeWeight: config.polyline.strokeWeight, + strokeOpacity: config.polyline.strokeOpacity, + enableEditing: config.polyline.enableEditing, + enableClicking: config.polyline.enableClicking, + strokeStyle: isSegmentCompleted ? "solid" : "dashed", + }; + + // 如果是虚线,设置虚线样式 + if (!isSegmentCompleted) { + segmentOptions.strokeDashArray = [10, 5]; + segmentOptions.strokeOpacity = 0.6; // 虚线透明度降低 + } + + // 创建线段并添加到数组 + segments.push(new BMapGL.Polyline(segmentPoints, segmentOptions)); + } + + // 将所有线段添加到地图 + segments.forEach((segment) => map.addOverlay(segment)); +} + +// 根据点类型获取线段颜色 +function getSegmentColor(startPoint, endPoint) { + // 如果两点类型相同,使用该类型对应颜色 + if (startPoint.type === endPoint.type) { + switch (startPoint.type) { + case 1: + return "#3388ff"; // 类型1蓝色 + case 2: + return "#ff9900"; // 类型2橙色 + case 3: + return "#33cc33"; // 类型3绿色 + default: + return config.polyline.strokeColor; + } + } + // 类型不同使用默认颜色 + return config.polyline.strokeColor; +} + +// 初始化地图 +initMap(); // 获取左上角滚动数据源 function getScrollData() { @@ -141,13 +540,101 @@ document.addEventListener("DOMContentLoaded", function () { // 启动动画 requestAnimationFrame(animateScroll); - // 鼠标悬停时暂停滚动 - scrollContent.addEventListener("mouseenter", function () { - scrollSpeed = 0; + // // 鼠标悬停时暂停滚动 + // scrollContent.addEventListener("mouseenter", function () { + // scrollSpeed = 0; + // }); + + // scrollContent.addEventListener("mouseleave", function () { + // scrollSpeed = 30; // 恢复原始速度 + // }); + + const drawer = document.querySelector(".right-drawer-box"); + const openBtn = document.querySelector(".open-drawer-box"); + const closeBtn = document.querySelector(".close-drawer-btn"); + + // 点击三角按钮打开抽屉 + openBtn.addEventListener("click", function () { + drawer.classList.add("open"); + + layui.use(["tree", "jquery"], function () { + var tree = layui.tree; + var $ = layui.jquery; + + // 初始化组织树 + function initOrgTree() { + // 渲染树形结构 + tree.render({ + elem: "#orgTree", // 绑定元素 + id: "orgTree", // 自定义索引 + data: getTreeData(), // 获取数据 + showCheckbox: false, // 是否显示复选框 + isJump: false, // 是否允许点击节点时弹出新窗口 + accordion: true, // 是否开启手风琴模式 + edit: false, // 是否开启节点的操作图标 + onlyIconControl: true, // 是否仅允许节点左侧图标控制展开收缩 + click: function (obj) { + console.log(obj.data); // 点击节点时的回调 + // 这里可以添加点击节点后的处理逻辑 + }, + }); + } + + // 模拟获取树形数据(实际项目中替换为AJAX请求) + function getTreeData() { + return [ + { + title: "总公司", + id: 1, + children: [ + { + title: "技术部", + id: 11, + children: [ + { title: "前端组", id: 111 }, + { title: "后端组", id: 112 }, + { title: "测试组", id: 113 }, + ], + }, + { + title: "市场部", + id: 12, + children: [ + { title: "销售组", id: 121 }, + { title: "推广组", id: 122 }, + ], + }, + { + title: "人事部", + id: 13, + children: [ + { title: "招聘组", id: 131 }, + { title: "培训组", id: 132 }, + ], + }, + ], + }, + ]; + } + + initOrgTree(); + }); }); - scrollContent.addEventListener("mouseleave", function () { - scrollSpeed = 30; // 恢复原始速度 + // 点击关闭按钮关闭抽屉 + closeBtn.addEventListener("click", function () { + drawer.classList.remove("open"); + }); + + // 点击抽屉外部关闭抽屉(可选) + document.addEventListener("click", function (e) { + if ( + drawer.classList.contains("open") && + !drawer.contains(e.target) && + e.target !== openBtn + ) { + drawer.classList.remove("open"); + } }); }); diff --git a/src/main/resources/static/pages/synthesisQuery/digitalSignage.html b/src/main/resources/static/pages/synthesisQuery/digitalSignage.html index 6bdcdf2..afedb71 100644 --- a/src/main/resources/static/pages/synthesisQuery/digitalSignage.html +++ b/src/main/resources/static/pages/synthesisQuery/digitalSignage.html @@ -17,7 +17,22 @@ 电子看板 + @@ -60,6 +75,21 @@ 6 --> + + +
+ +
+
+ + +
+
+
+
+ + +
From 71ac98f1efaea13311436403246818b1eaed0059 Mon Sep 17 00:00:00 2001 From: cwchen <1048842385@qq.com> Date: Thu, 24 Apr 2025 16:45:36 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E7=94=B5=E5=AD=90=E7=9C=8B=E6=9D=BF-?= =?UTF-8?q?=E4=B8=89=E8=B7=A8=E6=95=B0=E6=8D=AE=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/DigitalSignageController.java | 7 ++ .../backstage/dao/DigitalSignageDao.java | 9 ++ .../backstage/entity/vo/DigitalSignageVo.java | 94 +++++++++++++++++-- .../service/DigitalSignageService.java | 9 ++ .../impl/DigitalSignageServiceImpl.java | 11 +++ .../backstage/DigitalSignageMapper.xml | 22 +++++ 6 files changed, 143 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/bonus/digitalSignage/backstage/controller/DigitalSignageController.java b/src/main/java/com/bonus/digitalSignage/backstage/controller/DigitalSignageController.java index 55995ec..2b40d5c 100644 --- a/src/main/java/com/bonus/digitalSignage/backstage/controller/DigitalSignageController.java +++ b/src/main/java/com/bonus/digitalSignage/backstage/controller/DigitalSignageController.java @@ -41,4 +41,11 @@ public class DigitalSignageController { public ServerResponse getTowerProgressNum(EncryptedReq dto) { return service.getTowerProgressNum(dto.getData()); } + + @ApiOperation("电子看板-三跨数据") + @PostMapping(value = "getThreeSpans") + @DecryptAndVerify(decryptedClass = QueryParamDto.class)//加解密统一管理 + public ServerResponse getThreeSpans(EncryptedReq dto) { + return service.getThreeSpans(dto.getData()); + } } diff --git a/src/main/java/com/bonus/digitalSignage/backstage/dao/DigitalSignageDao.java b/src/main/java/com/bonus/digitalSignage/backstage/dao/DigitalSignageDao.java index d9e7cbc..4010455 100644 --- a/src/main/java/com/bonus/digitalSignage/backstage/dao/DigitalSignageDao.java +++ b/src/main/java/com/bonus/digitalSignage/backstage/dao/DigitalSignageDao.java @@ -42,4 +42,13 @@ public interface DigitalSignageDao { * @date 2025/4/24 13:59 */ int getRopewayTransNum(QueryParamDto dto); + + /** + * 电子看板-三跨数据 + * @param dto + * @return List + * @author cwchen + * @date 2025/4/24 14:50 + */ + List getThreeSpans(QueryParamDto dto); } diff --git a/src/main/java/com/bonus/digitalSignage/backstage/entity/vo/DigitalSignageVo.java b/src/main/java/com/bonus/digitalSignage/backstage/entity/vo/DigitalSignageVo.java index e9c872e..d90f54d 100644 --- a/src/main/java/com/bonus/digitalSignage/backstage/entity/vo/DigitalSignageVo.java +++ b/src/main/java/com/bonus/digitalSignage/backstage/entity/vo/DigitalSignageVo.java @@ -14,23 +14,99 @@ public class DigitalSignageVo { @Data public static class TowerProgressNumVo { - /**基础开挖*/ + /** + * 基础开挖 + */ private int num1; - /**开挖完成*/ + /** + * 开挖完成 + */ private int num2; - /**浇筑完成*/ + /** + * 浇筑完成 + */ private int num3; - /**铁塔组立*/ + /** + * 铁塔组立 + */ private int num4; - /**组塔完成*/ + /** + * 组塔完成 + */ private int num5; - /**架线完成*/ + /** + * 架线完成 + */ private int num6; - /**附件安装*/ + /** + * 附件安装 + */ private int num7; - /**未开始*/ + /** + * 未开始 + */ private int num8; - /**索道运输*/ + /** + * 索道运输 + */ private int num9; } + + @Data + public static class ThreeSpanVo { + + /** + * 跨越类型 1.跨线路 2.跨公路 3.跨铁路 + */ + private String spanType; + /** + * 开始杆塔id + */ + private Long towerId; + /** + * 结束杆塔id + */ + private String towerName; + /** + * 开始杆塔名称 + */ + private Long nextTowerId; + /** + * 结束杆塔名称 + */ + private String nextTowerName; + /** + * 上层线路 + */ + private String upperLine; + /** + * 下层线路 + */ + private String lowerLine; + /** + * 交叉角度 + */ + private String intersectionAngle; + /** + * 垂直距离(m) + */ + private String verticalDistance; + /** + * 安全裕度(°) + */ + private String safetyMargin; + /** + * 垂直净距(m) + */ + private String verticalClearDistance; + /** + * 杆塔间距(m) + */ + private String towerSpacing; + /** + * 公路宽度(m) + */ + private String highwayWidth; + + } } diff --git a/src/main/java/com/bonus/digitalSignage/backstage/service/DigitalSignageService.java b/src/main/java/com/bonus/digitalSignage/backstage/service/DigitalSignageService.java index e856d69..adc8a47 100644 --- a/src/main/java/com/bonus/digitalSignage/backstage/service/DigitalSignageService.java +++ b/src/main/java/com/bonus/digitalSignage/backstage/service/DigitalSignageService.java @@ -28,4 +28,13 @@ public interface DigitalSignageService { * @date 2025/4/24 13:52 */ ServerResponse getTowerProgressNum(QueryParamDto data); + + /** + * 电子看板-三跨数据 + * @param data + * @return ServerResponse + * @author cwchen + * @date 2025/4/24 14:48 + */ + ServerResponse getThreeSpans(QueryParamDto data); } diff --git a/src/main/java/com/bonus/digitalSignage/backstage/service/impl/DigitalSignageServiceImpl.java b/src/main/java/com/bonus/digitalSignage/backstage/service/impl/DigitalSignageServiceImpl.java index 3b2c062..fbe3590 100644 --- a/src/main/java/com/bonus/digitalSignage/backstage/service/impl/DigitalSignageServiceImpl.java +++ b/src/main/java/com/bonus/digitalSignage/backstage/service/impl/DigitalSignageServiceImpl.java @@ -78,4 +78,15 @@ public class DigitalSignageServiceImpl implements DigitalSignageService { } return ServerResponse.createSuccess(vo); } + + @Override + public ServerResponse getThreeSpans(QueryParamDto dto) { + List list = new ArrayList<>(); + try { + list = Optional.ofNullable(dao.getThreeSpans(dto)).orElseGet(ArrayList::new); + } catch (Exception e) { + log.error(e.toString(), e); + } + return ServerResponse.createSuccess(list); + } } diff --git a/src/main/resources/mappers/backstage/DigitalSignageMapper.xml b/src/main/resources/mappers/backstage/DigitalSignageMapper.xml index 3f7dd7c..daa55f0 100644 --- a/src/main/resources/mappers/backstage/DigitalSignageMapper.xml +++ b/src/main/resources/mappers/backstage/DigitalSignageMapper.xml @@ -60,4 +60,26 @@ FROM tb_cablewa_trans WHERE pro_id = #{id} AND is_active = '1' + + From 70b8075fc6ac25b1b7d7b148fda34d3433374335 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=A9=AC=E4=B8=89=E7=82=AE?= <15856818120@163.com> Date: Fri, 25 Apr 2025 09:31:23 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E7=BA=BF=E8=B7=AF=E5=B7=A5=E7=A8=8B?= =?UTF-8?q?=E7=AE=A1=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../basic/controller/TbProjectController.java | 58 ++++++++++ .../basic/dao/TbProjectMapper.java | 11 ++ .../basic/service/TbProjectService.java | 20 ++++ .../service/impl/TbProjectServiceImpl.java | 43 ++++++++ .../digitalSignage/basic/vo/TbProjectVo.java | 101 ++++++++++++++++++ .../mappers/basic/TbProjectMapper.xml | 31 ++++++ 6 files changed, 264 insertions(+) create mode 100644 src/main/java/com/bonus/digitalSignage/basic/controller/TbProjectController.java create mode 100644 src/main/java/com/bonus/digitalSignage/basic/dao/TbProjectMapper.java create mode 100644 src/main/java/com/bonus/digitalSignage/basic/service/TbProjectService.java create mode 100644 src/main/java/com/bonus/digitalSignage/basic/service/impl/TbProjectServiceImpl.java create mode 100644 src/main/java/com/bonus/digitalSignage/basic/vo/TbProjectVo.java create mode 100644 src/main/resources/mappers/basic/TbProjectMapper.xml diff --git a/src/main/java/com/bonus/digitalSignage/basic/controller/TbProjectController.java b/src/main/java/com/bonus/digitalSignage/basic/controller/TbProjectController.java new file mode 100644 index 0000000..2188b83 --- /dev/null +++ b/src/main/java/com/bonus/digitalSignage/basic/controller/TbProjectController.java @@ -0,0 +1,58 @@ +package com.bonus.digitalSignage.basic.controller; + +import com.bonus.digitalSignage.annotation.DecryptAndVerify; +import com.bonus.digitalSignage.annotation.LogAnnotation; +import com.bonus.digitalSignage.backstage.entity.dto.QueryParamDto; +import com.bonus.digitalSignage.basic.service.TbProjectService; +import com.bonus.digitalSignage.basic.vo.TbProjectVo; +import com.bonus.digitalSignage.system.vo.EncryptedReq; +import com.bonus.digitalSignage.utils.ServerResponse; +import com.github.pagehelper.PageHelper; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; + +/** + * @author 马三炮 + * @date 2025/4/24 + */ +@RestController +@RequestMapping("/tbProject") +@Slf4j +public class TbProjectController { + + @Resource + private TbProjectService tbProjectService; + + /** + * 线路工程管理-查询列表 + * @param dto + * @return + */ + @PostMapping(value = "getTbProjectList") + @DecryptAndVerify(decryptedClass = TbProjectVo.class)//加解密统一管理 + @LogAnnotation(operModul = "基础管理-线路工程管理", operation = "查询列表", operDesc = "系统级事件",operType="查询") + public ServerResponse getTbProjectList(EncryptedReq dto) { + PageHelper.startPage(dto.getData().getPageNum(), dto.getData().getPageSize()); + return tbProjectService.getTbProjectList(dto.getData()); + } + + /** + * 线路工程管理-查询详情 + * @param dto + * @return + */ + @PostMapping(value = "getTbProjectById") + @DecryptAndVerify(decryptedClass = TbProjectVo.class)//加解密统一管理 + @LogAnnotation(operModul = "基础管理-线路工程管理", operation = "查询详情", operDesc = "系统级事件",operType="查询") + public ServerResponse getTbProjectById(EncryptedReq dto) { + return tbProjectService.getTbProjectById(dto.getData()); + } + + +} diff --git a/src/main/java/com/bonus/digitalSignage/basic/dao/TbProjectMapper.java b/src/main/java/com/bonus/digitalSignage/basic/dao/TbProjectMapper.java new file mode 100644 index 0000000..4315d61 --- /dev/null +++ b/src/main/java/com/bonus/digitalSignage/basic/dao/TbProjectMapper.java @@ -0,0 +1,11 @@ +package com.bonus.digitalSignage.basic.dao; + +import com.bonus.digitalSignage.basic.vo.TbProjectVo; + +import java.util.List; + +public interface TbProjectMapper { + List getTbProjectList(TbProjectVo data); + + TbProjectVo getTbProjectById(TbProjectVo data); +} diff --git a/src/main/java/com/bonus/digitalSignage/basic/service/TbProjectService.java b/src/main/java/com/bonus/digitalSignage/basic/service/TbProjectService.java new file mode 100644 index 0000000..072ae20 --- /dev/null +++ b/src/main/java/com/bonus/digitalSignage/basic/service/TbProjectService.java @@ -0,0 +1,20 @@ +package com.bonus.digitalSignage.basic.service; + +import com.bonus.digitalSignage.basic.vo.TbProjectVo; +import com.bonus.digitalSignage.utils.ServerResponse; + +public interface TbProjectService { + /** + * 线路工程管理-查询列表 + * @param data + * @return + */ + ServerResponse getTbProjectList(TbProjectVo data); + + /** + * 线路工程管理-查询详情 + * @param data + * @return + */ + ServerResponse getTbProjectById(TbProjectVo data); +} diff --git a/src/main/java/com/bonus/digitalSignage/basic/service/impl/TbProjectServiceImpl.java b/src/main/java/com/bonus/digitalSignage/basic/service/impl/TbProjectServiceImpl.java new file mode 100644 index 0000000..bd79ba8 --- /dev/null +++ b/src/main/java/com/bonus/digitalSignage/basic/service/impl/TbProjectServiceImpl.java @@ -0,0 +1,43 @@ +package com.bonus.digitalSignage.basic.service.impl; + +import com.bonus.digitalSignage.backstage.entity.vo.ProProgressVo; +import com.bonus.digitalSignage.basic.dao.TbProjectMapper; +import com.bonus.digitalSignage.basic.service.TbProjectService; +import com.bonus.digitalSignage.basic.vo.TbProjectVo; +import com.bonus.digitalSignage.utils.ServerResponse; +import com.github.pagehelper.PageInfo; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; + +/** + * @author 马三炮 + * @date 2025/4/24 + */ +@Service +@Slf4j +public class TbProjectServiceImpl implements TbProjectService { + + @Resource + private TbProjectMapper tbProjectMapper; + + /** + * 线路工程管理-查询列表 + * @param data + * @return + */ + @Override + public ServerResponse getTbProjectList(TbProjectVo data) { + List tbProjectVoList = tbProjectMapper.getTbProjectList(data); + PageInfo pageInfo = new PageInfo<>(tbProjectVoList); + return ServerResponse.createSuccessPage(pageInfo, data.getPageNum(), data.getPageSize()); + } + + @Override + public ServerResponse getTbProjectById(TbProjectVo data) { + TbProjectVo tbProject = tbProjectMapper.getTbProjectById(data); + return ServerResponse.createSuccess(tbProject); + } +} diff --git a/src/main/java/com/bonus/digitalSignage/basic/vo/TbProjectVo.java b/src/main/java/com/bonus/digitalSignage/basic/vo/TbProjectVo.java new file mode 100644 index 0000000..2e32e79 --- /dev/null +++ b/src/main/java/com/bonus/digitalSignage/basic/vo/TbProjectVo.java @@ -0,0 +1,101 @@ +package com.bonus.digitalSignage.basic.vo; + +import lombok.Data; + +import java.util.Date; + +/** + * @author 马三炮 + * @date 2025/4/24 + */ +@Data +public class TbProjectVo { + + /** + * id + */ + private Long id; + + /** + * 项目部id + */ + private Long departId; + + /** + * 工程名称 + */ + private String proName; + + /** + * 电压等级(电压等级) + */ + private String voltageLevel; + + /** + * 线路长度(单位km) + */ + private String lineLength; + + /** + * 计划开始时间 + */ + private String planStartTime; + + /** + * 计划完工时间 + */ + private String planEndTime; + + /** + * 经度 + */ + private String lon; + + /** + * 纬度 + */ + private String lat; + + /** + * 工程地址 + */ + private String address; + + /** + * 工程状态(字典表配置) + */ + private String proStatus; + + /** + * 项目进度(实时更新) + */ + private String proProgress; + + /** + * 是否可用 1.可用 0.不可用 + */ + private String isActive; + + /** + * 创建时间 + */ + private Date createTime; + + /** + * 更新时间 + */ + private Date updateTime; + + /** + * 创建人 + */ + private Date createUserId; + + /** + * 修改人 + */ + private Date updateUserId; + + private int pageNum = 1; + private int pageSize = 10; +} diff --git a/src/main/resources/mappers/basic/TbProjectMapper.xml b/src/main/resources/mappers/basic/TbProjectMapper.xml new file mode 100644 index 0000000..0c375d5 --- /dev/null +++ b/src/main/resources/mappers/basic/TbProjectMapper.xml @@ -0,0 +1,31 @@ + + + + + + +