门户资源分页查询优化;资源容量优化

This commit is contained in:
cjw 2024-06-26 14:36:42 +08:00
parent a786d1b81a
commit c72b8f2aba
5 changed files with 40 additions and 22 deletions

View File

@ -43,4 +43,6 @@ public class SysOssVolumeVo implements Serializable {
*/ */
private Long useVolume; private Long useVolume;
private String useVolumename; private String useVolumename;
private String volumePercent;
} }

View File

@ -17,5 +17,8 @@ import org.dromara.system.domain.vo.SysCatalogResourceVo;
@Mapper @Mapper
public interface SysCatalogResourceMapper extends BaseMapperPlus<SysCatalogResource, SysCatalogResourceVo> { public interface SysCatalogResourceMapper extends BaseMapperPlus<SysCatalogResource, SysCatalogResourceVo> {
Page<SysCatalogResourceVo> selectPageList(@Param("page") Page<SysCatalogResource> page, @Param("catalogId") Long catalogId); Page<SysCatalogResourceVo> selectPageList(@Param("page") Page<SysCatalogResource> page, @Param("catalogId") Long catalogId);
Page<SysCatalogResourceVo> selectProtalPageList(@Param("page") Page<SysCatalogResource> page,@Param("tenantId") String tenantId);
Page<SysCatalogResourceVo> selectProtalPageList(@Param("page") Page<SysCatalogResource> page, @Param("tenantId") String tenantId);
long selectChildFileNumById(@Param("tenantId") String tenantId, @Param("catalogId") Long catalogId);
} }

View File

@ -98,6 +98,10 @@ public class SysCatalogResourceServiceImpl implements ISysCatalogResourceService
//临时存放 //临时存放
String tenantId = bo.getAncestors(); String tenantId = bo.getAncestors();
IPage<SysCatalogResourceVo> result = baseMapper.selectProtalPageList(pageQuery.build(), tenantId); IPage<SysCatalogResourceVo> result = baseMapper.selectProtalPageList(pageQuery.build(), tenantId);
for (SysCatalogResourceVo record : result.getRecords()) {
long count = baseMapper.selectChildFileNumById(tenantId, record.getCatalogId());
record.setResourceNum(record.getResourceNum() + count);
}
return TableDataInfo.build(result); return TableDataInfo.build(result);
} }

View File

@ -43,6 +43,8 @@ import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import java.io.*; import java.io.*;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collection; import java.util.Collection;
import java.util.List; import java.util.List;
@ -377,10 +379,16 @@ public class SysOssServiceImpl implements ISysOssService, OssService {
@Override @Override
public SysOssVolumeVo getVolumeVoByType(Integer type) { public SysOssVolumeVo getVolumeVoByType(Integer type) {
SysOssVolumeVo ossVolumeVo = volumeMapper.selectVoOne(new LambdaQueryWrapper<SysOssVolume>().eq(SysOssVolume::getType, type)); SysOssVolumeVo ossVolumeVo = volumeMapper.selectVoOne(new LambdaQueryWrapper<SysOssVolume>().eq(SysOssVolume::getType, type));
String totalName = DataSizeUtil.format(ossVolumeVo.getTotalVolume()); Long totalVolume = ossVolumeVo.getTotalVolume();
String useName = DataSizeUtil.format(ossVolumeVo.getUseVolume()); Long useVolume = ossVolumeVo.getUseVolume();
String totalName = DataSizeUtil.format(totalVolume);
String useName = DataSizeUtil.format(useVolume);
ossVolumeVo.setTotalVolumeName(totalName); ossVolumeVo.setTotalVolumeName(totalName);
ossVolumeVo.setUseVolumename(useName); ossVolumeVo.setUseVolumename(useName);
int i = BigDecimal.valueOf(useVolume)
.divide(BigDecimal.valueOf(totalVolume), 2, RoundingMode.HALF_UP)
.multiply(BigDecimal.valueOf(100)).intValue();
ossVolumeVo.setVolumePercent(i + "%");
return ossVolumeVo; return ossVolumeVo;
} }

View File

@ -15,24 +15,25 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</select> </select>
<select id="selectProtalPageList" resultType="org.dromara.system.domain.vo.SysCatalogResourceVo"> <select id="selectProtalPageList" resultType="org.dromara.system.domain.vo.SysCatalogResourceVo">
with recursive cte as (select * select cr.catalog_id as catalogId,
from sys_catalog_resource cr.catalog_name as catalogName,
where type = 2 cr.create_time as createTime,
and del_flag = 0 cr.cover as coverUrl,
and tenant_id = #{tenantId} count(r.id) as resourceNum
union all from sys_catalog_resource cr
select d.* left join sys_oss_resource r on r.catalog_id = cr.catalog_id and r.status = 1
from sys_catalog_resource d where cr.type = 2
inner join cte on d.parent_id = cte.catalog_id and cr.del_flag = 0
where d.del_flag = 0 and cr.tenant_id = #{tenantId}
and d.tenant_id = #{tenantId}) group by cr.catalog_id
select t.catalog_id as catalogId, </select>
any_value(t.catalog_name) as catalogName,
any_value(t.create_time) as createTime, <select id="selectChildFileNumById" resultType="long">
any_value(t.cover) as coverUrl, select count(*)
count(r.id) as resourceNum from sys_catalog_resource cr
from cte t left join sys_oss_resource r on r.catalog_id = cr.catalog_id
left join sys_oss_resource r on r.catalog_id = t.catalog_id and r.status = 1 where cr.tenant_id = #{tenantId}
group by t.catalog_id and r.status = 1
and FIND_IN_SET(#{catalogId}, cr.ancestors)
</select> </select>
</mapper> </mapper>