From 2a2e42fe5e4ab1cd00d765a82013803bca2b678f Mon Sep 17 00:00:00 2001 From: guoshengxiong <1923636941@qq.com> Date: Fri, 19 Sep 2025 16:47:58 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=81=E4=B8=9A=E8=A7=86=E9=A2=91=E5=A2=9E?= =?UTF-8?q?=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 df1d9b387..498268bb5 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 + +