Compare commits

...

8 Commits

Author SHA1 Message Date
review512jwy@163.com 6c21b23e42 Merge branch 'ppt-20260120' into jwy 1 month ago
review512jwy@163.com 23bc21c798 Merge branch 'zhc' into ppt-20260120 1 month ago
review512jwy@163.com edd1b08bf1 getTopCompanyId死循环 1 month ago
review512jwy@163.com 2f9e6e4a3b 收藏展示全部 1 month ago
review512jwy@163.com 04c65653b6 代码完善 1 month ago
review512jwy@163.com b0f65a9091 Merge branch 'zhc' into jwy 1 month ago
review512jwy@163.com c77a58b174 合并冲突 3 months ago
review512jwy@163.com 4f6f2b1581 getOverviewInfo改为物件层级 4 months ago
  1. 64
      dongjian-dashboard-back-common/src/main/java/com/dongjian/dashboard/back/common/config/DataSourceInterceptor.java
  2. 2
      dongjian-dashboard-back-dao/src/main/java/com/dongjian/dashboard/back/dao/ex/BasicUserMapperExt.java
  3. 3
      dongjian-dashboard-back-dao/src/main/java/com/dongjian/dashboard/back/dao/ex/LevelMapperExt.java
  4. 10
      dongjian-dashboard-back-dao/src/main/resources/mappers/ex/BasicUserMapperExt.xml
  5. 4
      dongjian-dashboard-back-dao/src/main/resources/mappers/ex/FavoritedDeviceMapperExt.xml
  6. 13
      dongjian-dashboard-back-dao/src/main/resources/mappers/ex/LevelMapperExt.xml
  7. 2
      dongjian-dashboard-back-dao/src/main/resources/mappers/ex/OverviewInfoMapperExt.xml
  8. 16
      dongjian-dashboard-back-service/src/main/java/com/dongjian/dashboard/back/service/common/CommonOpt.java
  9. 4
      dongjian-dashboard-back-service/src/main/java/com/dongjian/dashboard/back/service/impl/DeviceDataBaStatusServiceImpl.java
  10. 3
      dongjian-dashboard-back-service/src/main/java/com/dongjian/dashboard/back/service/impl/OverviewServiceImpl.java

64
dongjian-dashboard-back-common/src/main/java/com/dongjian/dashboard/back/common/config/DataSourceInterceptor.java

@ -13,10 +13,7 @@ import com.dongjian.dashboard.back.common.Constants;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.*;
import java.util.concurrent.atomic.AtomicLong;
@ -56,25 +53,46 @@ public class DataSourceInterceptor implements HandlerInterceptor {
}
public long getTopCompanyId(String companyId) {
String sql="SELECT "
+ " bcom.id, bcom.parent_id parentId"
+ " FROM data_center_aeon_admin.basic_company bcom "
+ " WHERE bcom.flag != 1 and bcom.id = " + companyId;
AtomicLong parentId = new AtomicLong(0);
AtomicLong id = new AtomicLong(0);
jdbcTemplate.query(sql,rs -> {
parentId.set(rs.getLong("parentId"));
id.set(rs.getLong("id"));
});
//Recursive logic
if (1 == parentId.get() || -1 == parentId.get()) {
return id.get();
} else {
return getTopCompanyId(parentId.get()+"");
}
}
if (StringUtils.isBlank(companyId)) {
throw new IllegalArgumentException("companyId不能为空");
}
return getTopCompanyIdInternal(Long.parseLong(companyId), new HashSet<>());
}
private long getTopCompanyIdInternal(Long companyId, Set<Long> visited) {
// 防止循环引用
if (!visited.add(companyId)) {
throw new IllegalStateException("检测到公司父子结构循环,companyId=" + companyId);
}
String sql = """
SELECT id, parent_id
FROM data_center_aeon_admin.basic_company
WHERE flag != 1 AND id = ?
""";
List<Map<String, Object>> result = jdbcTemplate.queryForList(sql, companyId);
if (result.isEmpty()) {
throw new IllegalStateException("公司不存在,companyId=" + companyId);
}
Map<String, Object> row = result.get(0);
Long parentId = row.get("parent_id") == null
? null
: ((Number) row.get("parent_id")).longValue();
// 顶级企业
if (parentId == null || parentId == 1 || parentId == -1) {
return companyId;
}
return getTopCompanyIdInternal(parentId, visited);
}
/**
* 获取所有的一级企业

2
dongjian-dashboard-back-dao/src/main/java/com/dongjian/dashboard/back/dao/ex/BasicUserMapperExt.java

@ -23,4 +23,6 @@ public interface BasicUserMapperExt extends BasicUserMapper{
UserInfoVO getAccountInfo(Map<String, Object> paramMap);
Integer checkBuildingManager(Long userId);
Integer checkLevelManager(Long userId);
}

3
dongjian-dashboard-back-dao/src/main/java/com/dongjian/dashboard/back/dao/ex/LevelMapperExt.java

@ -4,6 +4,7 @@ import com.dongjian.dashboard.back.dto.level.LevelEntity;
import com.dongjian.dashboard.back.dto.level.LevelRelationEntity;
import com.dongjian.dashboard.back.dto.level.OptLevelParam;
import com.dongjian.dashboard.back.dto.level.PageLevelSearchParam;
import com.dongjian.dashboard.back.vo.building.BindedBuildingVO;
import com.dongjian.dashboard.back.vo.level.LevelPageDTO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
@ -32,4 +33,6 @@ public interface LevelMapperExt {
void deleteLevelRelationByIdList(@Param("param") LevelRelationEntity param, @Param("idList") List<Long> idList);
List<LevelPageDTO> getListPage(PageLevelSearchParam pageSearchParam);
List<Long> getBoundBuilding(Long userId);
}

10
dongjian-dashboard-back-dao/src/main/resources/mappers/ex/BasicUserMapperExt.xml

@ -114,5 +114,15 @@
INNER JOIN data_center_aeon_admin.basic_role_menu_relation rmr ON br.id = rmr.role_id
WHERE rmr.menu_id = 52 AND br.flag != 1 AND rru.user_id = #{userId}
</select>
<select id="checkLevelManager" resultType="java.lang.Integer">
SELECT
count(1)
FROM
data_center_aeon_admin.basic_role_user_relation rru
INNER JOIN data_center_aeon_admin.basic_role br ON br.id = rru.role_id
INNER JOIN data_center_aeon_admin.basic_role_menu_relation rmr ON br.id = rmr.role_id
WHERE rmr.menu_id = 88 AND br.flag != 1 AND rru.user_id = #{userId}
</select>
</mapper>

4
dongjian-dashboard-back-dao/src/main/resources/mappers/ex/FavoritedDeviceMapperExt.xml

@ -20,7 +20,9 @@
WHERE
dinfo.flag != 1 AND basic_monitoring_asset.flag != 1
AND basic_space.flag != 1 AND basic_floor.flag != 1 AND basic_building.flag != 1
AND basic_building.building_id = #{buildingId}
<if test="buildingId != null">
AND basic_building.building_id = #{buildingId}
</if>
AND dinfo.company_id IN <foreach collection="companyIdList" item="item" open="(" separator="," close=")">#{item}</foreach>
<if test="categoryIdList != null and categoryIdList.size() > 0">
and ty.device_category_id in

13
dongjian-dashboard-back-dao/src/main/resources/mappers/ex/LevelMapperExt.xml

@ -180,4 +180,17 @@
order BY base.`id` desc
</select>
<select id="getBoundBuilding" resultType="java.lang.Long">
SELECT
DISTINCT sb.building_id
FROM dashboard_level_role_user rl
INNER JOIN dashboard_level_role_object ro ON rl.level_role_id = ro.level_role_id
INNER JOIN dashboard_level_relation_branch_store brs ON ro.ref_type = 'BRANCH' AND ro.ref_id = brs.branch_id
INNER JOIN dashboard_level_relation_store_area sra ON brs.store_id = sra.store_id
INNER JOIN dashboard_level_relation_area_site ras ON sra.area_id = ras.area_id
INNER JOIN dashboard_level_relation_site_building sb ON ras.site_id = sb.site_id
INNER JOIN basic_building bb ON sb.building_id = bb.building_id
WHERE bb.flag = 0 AND rl.user_id = #{userId}
</select>
</mapper>

2
dongjian-dashboard-back-dao/src/main/resources/mappers/ex/OverviewInfoMapperExt.xml

@ -26,7 +26,7 @@
</foreach>
WHERE
bbuilding.company_id = #{companyId} AND bbuilding.flag = 0 AND basic_floor.flag = 0 AND basic_space.flag = 0
AND basic_monitoring_asset.flag = 0 AND dinfo.flag = 0 AND basic_asset_class_big.flag = 0
AND basic_monitoring_asset.flag = 0 AND dinfo.flag = 0
AND ah.confirm_status = 0 AND ah.handle_status = 1
</select>

16
dongjian-dashboard-back-service/src/main/java/com/dongjian/dashboard/back/service/common/CommonOpt.java

@ -71,6 +71,8 @@ public class CommonOpt {
@Autowired
private UserBuildingRelationMapperExt userBuildingRelationMapperExt;
@Autowired
private LevelMapperExt levelMapperExt;
@Autowired
private DeviceRawdataRealtimeMapperExt deviceRawdataRealtimeMapperExt;
@Autowired
private DeviceInfoMapperExt deviceInfoMapperExt;
@ -253,6 +255,20 @@ public class CommonOpt {
}
}
public List<Long> getBindLevelBuildingIdList(Long userId) {
Integer levelManager = basicUserMapperExt.checkLevelManager(userId);
if (levelManager > 0) {
return null;//null表示不限制, sql里面判定bindedBuildingList=null的话,就不限制楼宇
} else {
List<Long> bindedBuildingList = levelMapperExt.getBoundBuilding(userId);
if (CollectionUtils.isEmpty(bindedBuildingList)) {
return Collections.singletonList(-1L);//-1的话,表示没有绑定
} else {
return bindedBuildingList;
}
}
}
public List<String> getPreDay(int days) {
// 日本时区
ZoneId JST = Constants.ZONE_TOKYO;

4
dongjian-dashboard-back-service/src/main/java/com/dongjian/dashboard/back/service/impl/DeviceDataBaStatusServiceImpl.java

@ -196,11 +196,7 @@ public class DeviceDataBaStatusServiceImpl implements DeviceDataBaStatusService
List<Object> yCommon = new ArrayList<>();
//** 获取昨日最新数据 **//
String redisKey = Constants.REDIS_BA_STATUS_LATEST_VALUE + DateUtil.getYesterdayInJapan();
boolean cacheExist = redisUtil.existsKey(redisKey);
Object cacheLastValue = redisUtil.HGet(redisKey, lineDataSearchParams.getDeviceId().toLowerCase());
if (null != cacheLastValue) {
try {

3
dongjian-dashboard-back-service/src/main/java/com/dongjian/dashboard/back/service/impl/OverviewServiceImpl.java

@ -60,7 +60,7 @@ public class OverviewServiceImpl implements OverviewService {
public SimpleDataResponse<List<OverviewVO>> getOverviewInfo(Long userId, Long companyId, Integer languageType, Integer utcOffset) {
Map<String, Object> buildingMap = new HashMap<>();
buildingMap.put("companyId", companyId);
buildingMap.put("bindBuildingIdList", commonOpt.getBindBuildingIdList(userId));
buildingMap.put("bindBuildingIdList", commonOpt.getBindLevelBuildingIdList(userId));
List<OverviewVO> buildingInfoList = overviewInfoMapperExt.getBuildingInfo(buildingMap);
@ -196,6 +196,7 @@ public class OverviewServiceImpl implements OverviewService {
// 分组监测点分类
List<OverviewVO.MonitoringPointCategoryAlarm> categoryAlarms = buildingInfos.stream()
.filter(dto -> dto.getMonitoringPointCategoryId() != null)
.collect(Collectors.groupingBy(OverviewInfo::getMonitoringPointCategoryId))
.entrySet()
.stream()

Loading…
Cancel
Save