From c7fa730509619a883c9af79da02fa9e223ee4a63 Mon Sep 17 00:00:00 2001 From: guoshengxiong <1923636941@qq.com> Date: Fri, 26 Sep 2025 19:16:25 +0800 Subject: [PATCH] =?UTF-8?q?=E7=9B=91=E6=8E=A7=E5=AF=BC=E5=85=A5=E8=AE=BE?= =?UTF-8?q?=E5=A4=87=E9=87=8D=E5=90=8D=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../video/controller/VideoItemController.java | 30 ++- .../xmgl/modules/video/entity/VideoItem.java | 14 ++ .../modules/video/mapper/VideoItemMapper.java | 5 +- .../video/mapper/xml/VideoItemMapper.xml | 9 + .../video/service/IVideoItemService.java | 1 - .../service/impl/VideoItemServiceImpl.java | 5 + .../controller/VideoGroupControllerTest.java | 207 ++++++++++++++++++ 7 files changed, 264 insertions(+), 7 deletions(-) create mode 100644 src/test/java/com/zhgd/xmgl/modules/video/controller/VideoGroupControllerTest.java diff --git a/src/main/java/com/zhgd/xmgl/modules/video/controller/VideoItemController.java b/src/main/java/com/zhgd/xmgl/modules/video/controller/VideoItemController.java index aca3fb88e..27b56d05b 100644 --- a/src/main/java/com/zhgd/xmgl/modules/video/controller/VideoItemController.java +++ b/src/main/java/com/zhgd/xmgl/modules/video/controller/VideoItemController.java @@ -1,5 +1,6 @@ package com.zhgd.xmgl.modules.video.controller; +import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson2.JSON; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; @@ -582,11 +583,14 @@ public class VideoItemController { .eq(ProjectVideoConfig::getProjectSn, projectSn) .eq(ProjectVideoConfig::getVideoType, videoType) ); + Map>> group2NameListMap = videoItemService.getEnableVideoListByProjectSn(projectSn).stream().collect(Collectors.groupingBy(VideoItem::getGroupId, Collectors.groupingBy(VideoItem::getVideoName))); if (videoConfig == null) { throw new OpenAlertException("请先启用该视频类型"); } List videoItems = new ArrayList<>(); + List updateVideoItems = new ArrayList<>(); List sucList = new ArrayList<>(); + List notChangeList = new ArrayList<>(); List failGroupList = new ArrayList<>(); for (Map importInfo : list) { VideoGroup group = groupMap.get(importInfo.get("*视频分组")); @@ -617,11 +621,28 @@ public class VideoItemController { videoItem.setAiFunctionType(aiFunctionType); videoItem.setParentObj(JSON.toJSONString(group)); videoItem.setAiVideoUrl(aiVideoUrl); - videoItem.setDefaultStreamType(defaultStreamType); - videoItems.add(videoItem); + videoItem.setDefaultStreamType(Objects.isNull(defaultStreamType) ? 1 : defaultStreamType); + List getItems = Optional.ofNullable(group2NameListMap.get(group.getId())).map(m -> m.get(videoName)).orElse(null); + if (CollUtil.isNotEmpty(getItems)) { + String toImportString = videoItem.toImportString(); + if (getItems.stream().anyMatch(item -> Objects.equals(item.toImportString(), toImportString))) { + notChangeList.add(videoName); + continue; + } else { + videoItem.setItemId(getItems.get(0).getItemId()); + updateVideoItems.add(videoItem); + } + } else { + videoItems.add(videoItem); + } sucList.add(videoName); } - videoItemService.saveBatch(videoItems); + if (CollUtil.isNotEmpty(videoItems)) { + videoItemService.saveBatch(videoItems); + } + if (CollUtil.isNotEmpty(updateVideoItems)) { + videoItemService.updateBatchById(updateVideoItems); + } StringJoiner joiner = new StringJoiner(";"); if (sucList.size() > 0) { joiner.add("导入成功:" + StrUtil.join(",", sucList)); @@ -629,6 +650,9 @@ public class VideoItemController { if (failGroupList.size() > 0) { joiner.add("导入失败(分组不存在):" + StrUtil.join(",", failGroupList)); } + if (notChangeList.size() > 0) { + joiner.add("忽略相同不导入:" + StrUtil.join(",", notChangeList)); + } String result = "导入完成。" + (joiner.length() > 0 ? joiner.toString() : ""); return Result.ok(result); } catch (OpenAlertException e) { diff --git a/src/main/java/com/zhgd/xmgl/modules/video/entity/VideoItem.java b/src/main/java/com/zhgd/xmgl/modules/video/entity/VideoItem.java index 11b916bd4..dbd08a422 100644 --- a/src/main/java/com/zhgd/xmgl/modules/video/entity/VideoItem.java +++ b/src/main/java/com/zhgd/xmgl/modules/video/entity/VideoItem.java @@ -230,4 +230,18 @@ public class VideoItem implements Serializable { @ApiModelProperty(value = "视频配置") private ProjectVideoConfig projectVideoConfig; + public String toImportString() { + return "VideoItem{" + + ", videoId=" + videoId + + ", videoName='" + videoName + '\'' + + ", serialNumber='" + serialNumber + '\'' + + ", verificationCode='" + verificationCode + '\'' + + ", deviceType=" + deviceType + + ", groupId=" + groupId + + ", aiFunctionType=" + aiFunctionType + + ", parentObj='" + parentObj + '\'' + + ", aiVideoUrl='" + aiVideoUrl + '\'' + + ", defaultStreamType=" + defaultStreamType + + '}'; + } } diff --git a/src/main/java/com/zhgd/xmgl/modules/video/mapper/VideoItemMapper.java b/src/main/java/com/zhgd/xmgl/modules/video/mapper/VideoItemMapper.java index 15537e507..28c9fb58b 100644 --- a/src/main/java/com/zhgd/xmgl/modules/video/mapper/VideoItemMapper.java +++ b/src/main/java/com/zhgd/xmgl/modules/video/mapper/VideoItemMapper.java @@ -3,7 +3,6 @@ package com.zhgd.xmgl.modules.video.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.zhgd.annotation.DataScope; import com.zhgd.jeecg.common.mybatis.EntityMap; -import com.zhgd.xmgl.base.entity.vo.TrendOneVo; import com.zhgd.xmgl.modules.video.entity.VideoItem; import com.zhgd.xmgl.modules.video.entity.bo.GroupVideoNumBo; import com.zhgd.xmgl.modules.xz.entity.vo.CountStatusVo; @@ -184,7 +183,7 @@ public interface VideoItemMapper extends BaseMapper { */ List countStatusTrend(Map param); - List getExceedSpeedTrend(Map map); - List getGroupVideoNumList(HashMap paramMap); + + List getEnableVideoListByProjectSn(String projectSn); } diff --git a/src/main/java/com/zhgd/xmgl/modules/video/mapper/xml/VideoItemMapper.xml b/src/main/java/com/zhgd/xmgl/modules/video/mapper/xml/VideoItemMapper.xml index ee4fc5065..10ddd2c28 100644 --- a/src/main/java/com/zhgd/xmgl/modules/video/mapper/xml/VideoItemMapper.xml +++ b/src/main/java/com/zhgd/xmgl/modules/video/mapper/xml/VideoItemMapper.xml @@ -378,4 +378,13 @@ AND vg.project_sn=#{projectSn} group by vg.id + + diff --git a/src/main/java/com/zhgd/xmgl/modules/video/service/IVideoItemService.java b/src/main/java/com/zhgd/xmgl/modules/video/service/IVideoItemService.java index 76f739f49..ae773d6e9 100644 --- a/src/main/java/com/zhgd/xmgl/modules/video/service/IVideoItemService.java +++ b/src/main/java/com/zhgd/xmgl/modules/video/service/IVideoItemService.java @@ -3,7 +3,6 @@ package com.zhgd.xmgl.modules.video.service; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.IService; -import com.dahuatech.icc.oauth.model.v202010.OauthConfigUserPwdInfo; import com.zhgd.jeecg.common.mybatis.EntityMap; import com.zhgd.xmgl.modules.project.entity.ProjectVideoConfig; import com.zhgd.xmgl.modules.video.entity.VideoItem; diff --git a/src/main/java/com/zhgd/xmgl/modules/video/service/impl/VideoItemServiceImpl.java b/src/main/java/com/zhgd/xmgl/modules/video/service/impl/VideoItemServiceImpl.java index a1fb31a85..c588936bf 100644 --- a/src/main/java/com/zhgd/xmgl/modules/video/service/impl/VideoItemServiceImpl.java +++ b/src/main/java/com/zhgd/xmgl/modules/video/service/impl/VideoItemServiceImpl.java @@ -963,6 +963,11 @@ public class VideoItemServiceImpl extends ServiceImpl getEnableVideoListByProjectSn(String projectSn) { + return videoItemMapper.getEnableVideoListByProjectSn(projectSn); + } + @Override public void updateByProjectAndNvrId(Long id, int status) { videoItemMapper.updateByNvrId(id, status); diff --git a/src/test/java/com/zhgd/xmgl/modules/video/controller/VideoGroupControllerTest.java b/src/test/java/com/zhgd/xmgl/modules/video/controller/VideoGroupControllerTest.java new file mode 100644 index 000000000..616301aa8 --- /dev/null +++ b/src/test/java/com/zhgd/xmgl/modules/video/controller/VideoGroupControllerTest.java @@ -0,0 +1,207 @@ +package com.zhgd.xmgl.modules.video.controller; + +import cn.hutool.http.HttpRequest; + +import java.util.Arrays; +import java.util.List; + +public class VideoGroupControllerTest { + + public static void main(String[] args) { + createGroup(); + } + + /** + * 批量创建分组 + * + * @param args + */ + private static void createGroup() { + List list = Arrays.asList("H01-X01方阵区域", + "H01-X02方阵区域", + "H01-X03方阵区域", + "H01-X04方阵区域", + "H01-X05方阵区域", + "H01-X06方阵区域", + "H04-X01方阵区域", + "H04-X02方阵区域", + "H04-X03方阵区域", + "H04-X04方阵区域", + "H04-X05方阵区域", + "H04-X06方阵区域", + "H04-X07方阵区域", + "H04-X08方阵区域", + "H04-X09方阵区域", + "H06-X01方阵区域", + "H06-X02方阵区域", + "H06-X03方阵区域", + "H06-X04方阵区域", + "H06-X05方阵区域", + "H06-X06方阵区域", + "H06-X07方阵区域", + "H06-X09方阵区域", + "H06-X10方阵区域", + "H07-X01方阵区域", + "H07-X02方阵区域", + "H07-X03方阵区域", + "H07-X04方阵区域", + "H07-X05方阵区域", + "H07-X06方阵区域", + "H07-X07方阵区域", + "H07-X08方阵区域", + "H07-X09方阵区域", + "H07-X10方阵区域", + "H08-X01方阵区域", + "H08-X02方阵区域", + "H08-X03方阵区域", + "H08-X04方阵区域", + "H08-X05方阵区域", + "H08-X06方阵区域", + "H08-X07方阵区域", + "H08-X08方阵区域", + "H08-X09方阵区域", + "H08-X10方阵区域", + "H09-X01方阵区域", + "H09-X02方阵区域", + "H09-X03方阵区域", + "H09-X04方阵区域", + "H09-X05方阵区域", + "H09-X06方阵区域", + "H09-X07方阵区域", + "H09-X08方阵区域", + "H09-X09方阵区域", + "H09-X10方阵区域", + "H11-X01方阵区域", + "H11-X02方阵区域", + "H11-X03方阵区域", + "H11-X04方阵区域", + "H11-X05方阵区域", + "H11-X06方阵区域", + "H11-X07方阵区域", + "H11-X08方阵区域", + "H12-X01方阵区域", + "H12-X02方阵区域", + "H12-X03方阵区域", + "H12-X04方阵区域", + "H12-X05方阵区域", + "H12-X06方阵区域", + "H12-X07方阵区域", + "H12-X08方阵区域", + "H12-X09方阵区域", + "H12-X10方阵区域", + "H13-X01方阵区域", + "H13-X02方阵区域", + "H13-X03方阵区域", + "H13-X04方阵区域", + "H13-X05方阵区域", + "H13-X06方阵区域", + "H13-X07方阵区域", + "H13-X08方阵区域", + "H13-X09方阵区域", + "H14-X01方阵区域", + "H14-X02方阵区域", + "H14-X03方阵区域", + "H14-X04方阵区域", + "H14-X05方阵区域", + "H14-X06方阵区域", + "H14-X07方阵区域", + "H14-X08方阵区域", + "H14-X09方阵区域", + "H14-X10方阵区域", + "H16-X01方阵区域", + "H16-X02方阵区域", + "H16-X03方阵区域", + "H16-X04方阵区域", + "H16-X05方阵区域", + "H16-X06方阵区域", + "H17-X01方阵区域", + "H17-X02方阵区域", + "H17-X03方阵区域", + "H17-X04方阵区域", + "H17-X05方阵区域", + "H17-X06方阵区域", + "H17-X07方阵区域", + "H18-X01方阵区域", + "H18-X02方阵区域", + "H18-X03方阵区域", + "H18-X04方阵区域", + "H18-X05方阵区域", + "H18-X06方阵区域", + "H18-X07方阵区域", + "H18-X08方阵区域", + "H18-X09方阵区域", + "H19-X01方阵区域", + "H19-X02方阵区域", + "H19-X03方阵区域", + "H19-X04方阵区域", + "H19-X05方阵区域", + "H19-X06方阵区域", + "H19-X07方阵区域", + "H19-X08方阵区域", + "H19-X09方阵区域", + "H20-X01方阵区域", + "H20-X02方阵区域", + "H20-X03方阵区域", + "H20-X04方阵区域", + "H20-X05方阵区域", + "H20-X06方阵区域", + "H20-X07方阵区域", + "H20-X08方阵区域", + "H20-X09方阵区域", + "H21-X01方阵区域", + "H21-X02方阵区域", + "H21-X03方阵区域", + "H21-X04方阵区域", + "H21-X05方阵区域", + "H21-X06方阵区域", + "H21-X07方阵区域", + "H21-X08方阵区域", + "H21-X09方阵区域", + "H21-X10方阵区域", + "H22-X01方阵区域", + "H22-X02方阵区域", + "H22-X03方阵区域", + "H22-X04方阵区域", + "H22-X05方阵区域", + "H22-X06方阵区域", + "H22-X07方阵区域", + "H22-X08方阵区域", + "H22-X09方阵区域", + "H22-X10方阵区域", + "H23-X01方阵区域", + "H23-X02方阵区域", + "H23-X03方阵区域", + "H23-X04方阵区域", + "H23-X05方阵区域", + "H23-X06方阵区域", + "H23-X07方阵区域", + "H23-X08方阵区域", + "H23-X09方阵区域", + "H23-X10方阵区域", + "H23-X11方阵区域", + "H24-X01方阵区域", + "H24-X02方阵区域", + "H24-X03方阵区域", + "H24-X04方阵区域", + "H24-X05方阵区域", + "H24-X06方阵区域", + "H24-X07方阵区域", + "H24-X08方阵区域"); + for (String name : list) { + String body = HttpRequest.post("http://gszhdz.crpower.com.cn:9809/xmgl/videoGroup/add") + .body("{\n" + + " \"groupName\": \"" + name + "\",\n" + + " \"totalNum\": 0,\n" + + " \"children\": [],\n" + + " \"id\": \"1971489920436301826\",\n" + + " \"parentObj\": \"{\\\"groupName\\\":\\\"光伏区域\\\",\\\"totalNum\\\":0,\\\"children\\\":[],\\\"id\\\":\\\"1971489920436301826\\\",\\\"ancestors\\\":\\\"0\\\",\\\"projectSn\\\":\\\"5BFE355FC95F4350A0DE9D308BABE727\\\",\\\"parentId\\\":0}\",\n" + + " \"ancestors\": \"0\",\n" + + " \"projectSn\": \"5BFE355FC95F4350A0DE9D308BABE727\",\n" + + " \"parentId\": \"1971489920436301826\"\n" + + "}").header("authorization", "Bearer eyJhbGciOiJIUzI1NiJ9.eyJsb2dpblRpbWVPdXQiOjAsImV4cCI6MTc4OTk3ODc0NywidXVpZCI6IjQyMjljYTI0MDgzNTQ3OGViNTgxMGY2OTRiMjRlMzljIiwiaWF0IjoxNzU4ODc0NzQ3LCJhY2NvdW50IjoieW9uZ2RlbmcifQ.GgAz7Ztb6lrnhbehSqwM0cx1xy8VdexGsYCpJwYAyTk") + .execute().body(); + System.out.println(body); + } + } + +}