From 9d32aacaf548ae49c229ddcb17bf3293c3fad71c Mon Sep 17 00:00:00 2001 From: guoshengxiong <1923636941@qq.com> Date: Fri, 19 Sep 2025 16:47:58 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E4=BC=81=E4=B8=9A=E8=A7=86=E9=A2=91?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=88=86=E7=BB=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../jeecg/common/mybatis/EntityMapV2.java | 37 ++++++ .../service/impl/CompanyServiceImpl.java | 122 ++++++++++++------ .../modules/project/mapper/ProjectMapper.java | 2 + .../project/mapper/xml/ProjectMapper.xml | 35 ++++- .../service/impl/VideoItemServiceImpl.java | 9 +- 5 files changed, 153 insertions(+), 52 deletions(-) create mode 100644 src/main/java/com/zhgd/jeecg/common/mybatis/EntityMapV2.java diff --git a/src/main/java/com/zhgd/jeecg/common/mybatis/EntityMapV2.java b/src/main/java/com/zhgd/jeecg/common/mybatis/EntityMapV2.java new file mode 100644 index 000000000..d4765eca4 --- /dev/null +++ b/src/main/java/com/zhgd/jeecg/common/mybatis/EntityMapV2.java @@ -0,0 +1,37 @@ +package com.zhgd.jeecg.common.mybatis; + + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; +import com.zhgd.mybatis.Aes; + +/** + * 自定义MapV2 + */ +public class EntityMapV2 extends EntityMap { + @Override + public EntityMap put(String key, Object value) { + if (ObjectUtils.isNotEmpty(interceptors)) { + interceptors.convert(this, key, value); + } + if (key.startsWith(ASE)) { + super.put(underlineToCamel(key.substring(ASE.length())), Aes.decrypt(value.toString()), true); + } else { + String newk = key; + if (StrUtil.contains(key, "_")) { + newk = underlineToCamel(key); + } + if (ObjectUtils.isNotNull(value)) { + //判断数据是否是Long类型,如果是则转为字符串 + if (Long.class.isAssignableFrom(value.getClass())) { + super.put(newk, String.valueOf(value), true); + } else { + super.put(newk, value, true); + } + } else { + super.put(newk, "", true); + } + } + return this; + } +} diff --git a/src/main/java/com/zhgd/xmgl/modules/basicdata/service/impl/CompanyServiceImpl.java b/src/main/java/com/zhgd/xmgl/modules/basicdata/service/impl/CompanyServiceImpl.java index 4796ee977..4909c0b24 100644 --- a/src/main/java/com/zhgd/xmgl/modules/basicdata/service/impl/CompanyServiceImpl.java +++ b/src/main/java/com/zhgd/xmgl/modules/basicdata/service/impl/CompanyServiceImpl.java @@ -20,6 +20,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.gexin.fastjson.TypeReference; import com.zhgd.jeecg.common.execption.OpenAlertException; import com.zhgd.jeecg.common.mybatis.EntityMap; +import com.zhgd.jeecg.common.mybatis.EntityMapV2; import com.zhgd.xmgl.constant.Cts; import com.zhgd.xmgl.modules.basicdata.entity.Company; import com.zhgd.xmgl.modules.basicdata.entity.CompanyConfig; @@ -41,6 +42,7 @@ import com.zhgd.xmgl.modules.risk.entity.RiskListRuleItem; import com.zhgd.xmgl.modules.risk.service.IRiskListRuleItemService; import com.zhgd.xmgl.modules.risk.service.IRiskListRuleService; import com.zhgd.xmgl.modules.standard.mapper.StandardDevMapper; +import com.zhgd.xmgl.modules.video.service.impl.VideoItemServiceImpl; import com.zhgd.xmgl.modules.xz.security.entity.XzSecurityDangerField; import com.zhgd.xmgl.modules.xz.security.entity.vo.XzSecurityDangerFieldVo; import com.zhgd.xmgl.modules.xz.security.service.IXzSecurityDangerFieldService; @@ -350,17 +352,7 @@ public class CompanyServiceImpl extends ServiceImpl impl List childComapnyList = companyMapper.getFirstCompanyList(map); map.put("companyType", "1"); if (1 == projectType) { - List projectList = projectMapper.selectProjectStatisticsList(map); - if (1 == type) { - List videoList = projectMapper.selectVideoList(map); - hidePasswordName(videoList); - projectList = getGroupProjectVideo(projectList, videoList); - } - if (standardType == 1) { - List> standardList = standardDevMapper.selectProjecDevAlarmCount(map); - projectList = addProjectStandardData(projectList, standardList); - } - childComapnyList = getGroupStatisticsProject(childComapnyList, projectList); + childComapnyList = getChildCompanyStatisticsList(map, type, standardType, childComapnyList); } secondComapnyList = getGroupStatisticsCompany(secondComapnyList, childComapnyList); fistComapnyList = getGroupStatisticsCompany(fistComapnyList, secondComapnyList); @@ -376,17 +368,7 @@ public class CompanyServiceImpl extends ServiceImpl impl if (1 == projectType) { if (companyList != null && companyList.size() > 0) { map.put("companyType", "2"); - List projectList = projectMapper.selectProjectStatisticsList(map); - if (1 == type) { - List videoList = projectMapper.selectVideoList(map); - hidePasswordName(videoList); - projectList = getGroupProjectVideo(projectList, videoList); - } - if (standardType == 1) { - List> standardList = standardDevMapper.selectProjecDevAlarmCount(map); - projectList = addProjectStandardData(projectList, standardList); - } - companyList = getGroupStatisticsProject(companyList, projectList); + companyList = getChildCompanyStatisticsList(map, type, standardType, companyList); } } fistComapnyList = getGroupStatisticsCompany(fistComapnyList, companyList); @@ -401,17 +383,7 @@ public class CompanyServiceImpl extends ServiceImpl impl if (1 == projectType) { if (companyList != null && companyList.size() > 0) { map.put("companyType", "3"); - List projectList = projectMapper.selectProjectStatisticsList(map); - if (1 == type) { - List videoList = projectMapper.selectVideoList(map); - hidePasswordName(videoList); - projectList = getGroupProjectVideo(projectList, videoList); - } - if (standardType == 1) { - List> standardList = standardDevMapper.selectProjecDevAlarmCount(map); - projectList = addProjectStandardData(projectList, standardList); - } - companyList = getGroupStatisticsProject(companyList, projectList); + companyList = getChildCompanyStatisticsList(map, type, standardType, companyList); } } companyList = filterCompanyByProject(companyList, map); @@ -423,16 +395,7 @@ public class CompanyServiceImpl extends ServiceImpl impl data.put("companyInfo", tempCompany); data.put("firstCompany", firstCompany); map.put("companyType", "5"); - List projectList = projectMapper.selectProjectStatisticsList(map); - if (1 == type) { - List videoList = projectMapper.selectVideoList(map); - hidePasswordName(videoList); - projectList = getGroupProjectVideo(projectList, videoList); - } - if (standardType == 1) { - List> standardList = standardDevMapper.selectProjecDevAlarmCount(map); - projectList = addProjectStandardData(projectList, standardList); - } + List projectList = getProjectEntityMaps(map, type, standardType); data.put("projectList", projectList); } @@ -447,6 +410,62 @@ public class CompanyServiceImpl extends ServiceImpl impl return data; } + private List getChildCompanyStatisticsList(Map map, Integer type, Integer standardType, List childComapnyList) { + List projectList = getProjectEntityMaps(map, type, standardType); + childComapnyList = getGroupStatisticsProject(childComapnyList, projectList); + return childComapnyList; + } + + private List getProjectEntityMaps(Map map, Integer type, Integer standardType) { + List projectList = projectMapper.selectProjectStatisticsList(map); + if (1 == type) { + List videoList = projectMapper.selectVideoList(map); + List groupList = projectMapper.selectVideoGroupList(map); + putVideo(projectList, videoList); + hidePasswordName(videoList); + groupList = getGroupVideoList(groupList, videoList); + projectList = getGroupProjectVideo(projectList, groupList); + } + if (standardType == 1) { + List> standardList = standardDevMapper.selectProjecDevAlarmCount(map); + projectList = addProjectStandardData(projectList, standardList); + } + return projectList; + } + + private void putVideo(List projectList, List videoList) { + Map> projectSnMap = videoList.stream().collect(Collectors.groupingBy(entityMap -> entityMap.get("projectSn"))); + for (EntityMap entityMap : projectList) { + entityMap.put("allVideoList", projectSnMap.get(entityMap.get("projectSn"))); + } + } + + private List getGroupVideoList(List groupList, List videoList) { + JSONArray newArray = new JSONArray(); + groupList.addAll(videoList); + JSONArray jsonArray = JSONArray.parseArray(JSON.toJSONString(groupList)); + for (int i = 0; i < jsonArray.size(); i++) { + JSONObject jo = jsonArray.getJSONObject(i); + if (jo.containsKey("videoName")) { + jo.put("id", jo.getString("itemId")); + jo.put("parentId", jo.getString("groupId")); + } + newArray.add(jo); + } + String childName = "list"; + JSONArray videoJa = ListUtils.listToTree(newArray, "id", "parentId", childName); + List rtList = new ArrayList<>(); + if (CollUtil.isNotEmpty(videoJa)) { + for (int i = 0; i < videoJa.size(); i++) { + JSONObject jsonObject = videoJa.getJSONObject(i); + Map integerMap = VideoItemServiceImpl.getTotalAndOnlineNum(jsonObject, childName); + jsonObject.putAll(integerMap); + rtList.add(BeanUtil.toBean(jsonObject, EntityMapV2.class)); + } + } + return rtList; + } + /** * 监控的password字段改名为port * @@ -1113,6 +1132,23 @@ public class CompanyServiceImpl extends ServiceImpl impl return projectList; } + public List getGroupProjectVideoGroup(List projectList, List groupList) { + if (projectList != null && projectList.size() > 0) { + for (EntityMap data1 : projectList) { + List tempList = new ArrayList<>(); + if (groupList != null && groupList.size() > 0) { + for (EntityMap data2 : groupList) { + if (MapUtils.getString(data1, "projectSn").equals(MapUtils.getString(data2, "projectSn"))) { + tempList.add(data2); + } + } + } + data1.put(LIST, tempList); + } + } + return projectList; + } + public List addProjectStandardData(List projectList, List> standardList) { if (projectList != null && projectList.size() > 0) { for (EntityMap data1 : projectList) { diff --git a/src/main/java/com/zhgd/xmgl/modules/project/mapper/ProjectMapper.java b/src/main/java/com/zhgd/xmgl/modules/project/mapper/ProjectMapper.java index 432340662..b511a43fd 100644 --- a/src/main/java/com/zhgd/xmgl/modules/project/mapper/ProjectMapper.java +++ b/src/main/java/com/zhgd/xmgl/modules/project/mapper/ProjectMapper.java @@ -123,6 +123,8 @@ public interface ProjectMapper extends BaseMapper { @DataScope(includeTable = "video_item") List selectVideoList(Map map); + List selectVideoGroupList(Map map); + /** * 根据sn统计各种设备数量 * diff --git a/src/main/java/com/zhgd/xmgl/modules/project/mapper/xml/ProjectMapper.xml b/src/main/java/com/zhgd/xmgl/modules/project/mapper/xml/ProjectMapper.xml index 0ad14112b..e957a2dcd 100644 --- a/src/main/java/com/zhgd/xmgl/modules/project/mapper/xml/ProjectMapper.xml +++ b/src/main/java/com/zhgd/xmgl/modules/project/mapper/xml/ProjectMapper.xml @@ -270,14 +270,39 @@ order by t1.sort_num + + + + diff --git a/src/main/java/com/zhgd/xmgl/modules/video/service/impl/VideoGroupServiceImpl.java b/src/main/java/com/zhgd/xmgl/modules/video/service/impl/VideoGroupServiceImpl.java index b34b65b3b..2d8570151 100644 --- a/src/main/java/com/zhgd/xmgl/modules/video/service/impl/VideoGroupServiceImpl.java +++ b/src/main/java/com/zhgd/xmgl/modules/video/service/impl/VideoGroupServiceImpl.java @@ -1,9 +1,10 @@ package com.zhgd.xmgl.modules.video.service.impl; +import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; -import cn.hutool.core.util.StrUtil; 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.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @@ -11,20 +12,19 @@ import com.zhgd.jeecg.common.execption.OpenAlertException; import com.zhgd.jeecg.common.system.query.QueryGenerator; import com.zhgd.xmgl.modules.video.entity.VideoGroup; import com.zhgd.xmgl.modules.video.entity.VideoItem; +import com.zhgd.xmgl.modules.video.entity.bo.GroupVideoNumBo; +import com.zhgd.xmgl.modules.video.entity.vo.VideoGroupVo; import com.zhgd.xmgl.modules.video.mapper.VideoGroupMapper; import com.zhgd.xmgl.modules.video.mapper.VideoItemMapper; import com.zhgd.xmgl.modules.video.service.IVideoGroupService; -import com.zhgd.xmgl.modules.xz.entity.XzProjectOrg; import com.zhgd.xmgl.util.ListUtils; import com.zhgd.xmgl.util.MessageUtil; -import org.apache.commons.collections.MapUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.HashMap; -import java.util.List; -import java.util.Objects; +import java.util.*; +import java.util.function.Function; import java.util.stream.Collectors; /** @@ -122,6 +122,36 @@ public class VideoGroupServiceImpl extends ServiceImpl paramMap) { QueryWrapper queryWrapper = QueryGenerator.initPageQueryWrapper(VideoGroup.class, paramMap); - return ListUtils.listToTree(JSONArray.parseArray(JSON.toJSONString(list(queryWrapper))), "id", "parentId", "children"); + List groups = list(queryWrapper); + List videoNumBos = videoItemMapper.getGroupVideoNumList(paramMap); + Map videoNumMap = videoNumBos.stream().collect(Collectors.toMap(GroupVideoNumBo::getGroupId, Function.identity(), (o1, o2) -> o1)); + List videoGroupVos = BeanUtil.copyToList(groups, VideoGroupVo.class); + for (VideoGroupVo vo : videoGroupVos) { + vo.setTotalNum(Optional.ofNullable(videoNumMap.get(vo.getId())).map(GroupVideoNumBo::getTotalNum).orElse(0)); + } + JSONArray jsonArray = ListUtils.listToTree(JSONArray.parseArray(JSON.toJSONString(videoGroupVos)), "id", "parentId", "children"); + for (int i = 0; i < jsonArray.size(); i++) { + JSONObject jsonObject = jsonArray.getJSONObject(i); + getTotalNum(jsonObject, "children"); + } + return jsonArray; } + + private Integer getTotalNum(JSONObject jsonObject, String childName) { + JSONArray children = jsonObject.getJSONArray(childName); + Integer thisNum = jsonObject.getInteger("totalNum"); + Integer totalChildNum = 0; + if (CollUtil.isNotEmpty(children)) { + for (int i = 0; i < children.size(); i++) { + JSONObject child = children.getJSONObject(i); + Integer childNum = getTotalNum(child, childName); + // 累加子节点的统计结果 + totalChildNum += childNum; + } + } + int total = thisNum + totalChildNum; + jsonObject.put("totalNum", total); + return total; + } + } diff --git a/src/main/java/com/zhgd/xmgl/push/controller/UniPushController.java b/src/main/java/com/zhgd/xmgl/push/controller/UniPushController.java index 005500b6b..a526bf1ce 100644 --- a/src/main/java/com/zhgd/xmgl/push/controller/UniPushController.java +++ b/src/main/java/com/zhgd/xmgl/push/controller/UniPushController.java @@ -71,8 +71,9 @@ public class UniPushController { if (apiResult.isSuccess()){ result.successMsg("操作成功"); }else{ - result.error500(apiResult.getMsg()); +// result.error500(apiResult.getMsg()); } + result.code(200); }catch (Exception e){ log.error("error:", e); result.error500("操作失败"); diff --git a/src/main/java/com/zhgd/xmgl/push/service/impl/UniPushServiceImpl.java b/src/main/java/com/zhgd/xmgl/push/service/impl/UniPushServiceImpl.java index a0e3d03e7..ffb06699d 100644 --- a/src/main/java/com/zhgd/xmgl/push/service/impl/UniPushServiceImpl.java +++ b/src/main/java/com/zhgd/xmgl/push/service/impl/UniPushServiceImpl.java @@ -1,6 +1,7 @@ package com.zhgd.xmgl.push.service.impl; import com.alibaba.fastjson.JSON; +import com.getui.push.v2.sdk.api.UserApi; import com.getui.push.v2.sdk.common.ApiResult; import com.getui.push.v2.sdk.dto.req.Audience; import com.getui.push.v2.sdk.dto.req.CidAliasListDTO; @@ -154,8 +155,11 @@ public class UniPushServiceImpl implements UniPushService { list.add(cidAlias); cidAliasListDTO.setDataList(list); if (pushApiHelper != null) { - ApiResult result = pushApiHelper.getUserApi().bindAlias(cidAliasListDTO); - return result; + UserApi userApi = pushApiHelper.getUserApi(); + if (userApi != null) { + return userApi.bindAlias(cidAliasListDTO); + } + return ApiResult.fail("配置初始化失败", 5000); } else { return ApiResult.fail("配置初始化失败", 5000); }