优化数据总览

This commit is contained in:
2025-11-26 09:55:01 +08:00
parent 2934d469ec
commit 9ddba92c0a
6 changed files with 76 additions and 26 deletions

View File

@@ -4,6 +4,7 @@ import com.sdm.data.model.dto.NodeSizeDTO;
import com.sdm.data.model.dto.UserTotalFileSizeDTO;
import com.sdm.data.model.entity.FileStorage;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.sdm.data.model.req.QueryBigFileReq;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@@ -30,4 +31,6 @@ public interface FileStorageMapper extends BaseMapper<FileStorage> {
List<UserTotalFileSizeDTO> getTotalFileSizeByCreator(@Param("userIds") List<Long> userIds,@Param("intervalMonths") Integer intervalMonths);
List<UserTotalFileSizeDTO> getTotalFileSizeByCreatorAndTargetYm(@Param("userIds") List<Long> userIds,@Param("targetYm") String targetYm);
List<FileStorage> selectBigFiles(@Param("queryBigFileReq") QueryBigFileReq queryBigFileReq, @Param("fileSizeInBytes") Long fileSizeInBytes);
}

View File

@@ -4,6 +4,7 @@ import com.sdm.data.model.dto.NodeSizeDTO;
import com.sdm.data.model.dto.UserTotalFileSizeDTO;
import com.sdm.data.model.entity.FileStorage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.sdm.data.model.req.QueryBigFileReq;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@@ -24,5 +25,6 @@ public interface IFileStorageService extends IService<FileStorage> {
List<UserTotalFileSizeDTO> getTotalFileSizeByCreator(List<Long> userIds,Integer intervalMonths);
List<UserTotalFileSizeDTO> getTotalFileSizeByCreatorAndTargetYm(List<Long> userIds,String targetYm);
}
List<FileStorage> selectBigFiles(@Param("queryBigFileReq") QueryBigFileReq queryBigFileReq, @Param("fileSizeInBytes") Long fileSizeInBytes);
}

View File

@@ -176,14 +176,7 @@ public class DataStorageAnalysisImpl implements DataStorageAnalysis {
}
PageHelper.startPage(queryBigFileReq.getCurrent(), queryBigFileReq.getSize());
List<FileStorage> list = fileStorageService.lambdaQuery()
.eq(ObjectUtils.isNotEmpty(queryBigFileReq.getDirId()), FileStorage::getDirId, queryBigFileReq.getDirId())
.eq(ObjectUtils.isNotEmpty(queryBigFileReq.getFileSuffix()), FileStorage::getFileSuffix, queryBigFileReq.getFileSuffix())
.eq(ObjectUtils.isNotEmpty(queryBigFileReq.getFileBizType()), FileStorage::getFileBizType, queryBigFileReq.getFileBizType())
.like(ObjectUtils.isNotEmpty(queryBigFileReq.getFileName()), FileStorage::getFileName, queryBigFileReq.getFileName())
.gt(ObjectUtils.isNotEmpty(queryBigFileReq.getStartTime()), FileStorage::getCreateTime, queryBigFileReq.getStartTime())
.lt(ObjectUtils.isNotEmpty(queryBigFileReq.getEndTime()), FileStorage::getCreateTime, queryBigFileReq.getEndTime())
.gt(ObjectUtils.isNotEmpty(fileSizeInBytes), FileStorage::getFileSize, fileSizeInBytes).list();
List<FileStorage> list = fileStorageService.selectBigFiles(queryBigFileReq, fileSizeInBytes);
PageInfo<FileStorage> page = new PageInfo<>(list);
return PageUtils.getJsonObjectSdmResponse(list, page);
}

View File

@@ -4,6 +4,7 @@ import com.sdm.data.model.dto.NodeSizeDTO;
import com.sdm.data.model.dto.UserTotalFileSizeDTO;
import com.sdm.data.model.entity.FileStorage;
import com.sdm.data.dao.FileStorageMapper;
import com.sdm.data.model.req.QueryBigFileReq;
import com.sdm.data.service.IFileStorageService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.apache.ibatis.annotations.Param;
@@ -40,4 +41,9 @@ public class FileStorageServiceImpl extends ServiceImpl<FileStorageMapper, FileS
public List<UserTotalFileSizeDTO> getTotalFileSizeByCreatorAndTargetYm(List<Long> userIds, String targetYm) {
return baseMapper.getTotalFileSizeByCreatorAndTargetYm(userIds, targetYm);
}
@Override
public List<FileStorage> selectBigFiles(QueryBigFileReq queryBigFileReq, Long fileSizeInBytes) {
return baseMapper.selectBigFiles(queryBigFileReq, fileSizeInBytes);
}
}

View File

@@ -17,6 +17,8 @@ import com.sdm.data.service.IDataFileService;
import com.sdm.data.service.ISimulationParameterLibraryCategoryObjectService;
import com.sdm.data.service.ISimulationParameterLibraryCategoryService;
import com.sdm.data.service.ISimulationParameterLibraryService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.ObjectUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -34,6 +36,7 @@ import java.util.*;
* @author author
* @since 2025-10-16
*/
@Slf4j
@Service
public class SimulationParameterLibraryServiceImpl extends ServiceImpl<SimulationParameterLibraryMapper, SimulationParameterLibrary> implements ISimulationParameterLibraryService {
@@ -151,9 +154,9 @@ public class SimulationParameterLibraryServiceImpl extends ServiceImpl<Simulatio
} else if (type == SimulationParameterDataTypeEnum.CATEGORY.getValue()) {
simulationParameterLibraryCategoryService.removeById(id);
simulationParameterLibraryCategoryObjectService.lambdaUpdate().eq(SimulationParameterLibraryCategoryObject::getParameterLibraryCategoryId, id).remove();
}else if (type == SimulationParameterDataTypeEnum.LIBRARY.getValue()) {
} else if (type == SimulationParameterDataTypeEnum.LIBRARY.getValue()) {
this.removeById(id);
simulationParameterLibraryCategoryService.lambdaUpdate().eq(SimulationParameterLibraryCategory::getParameterLibraryId,id).remove();
simulationParameterLibraryCategoryService.lambdaUpdate().eq(SimulationParameterLibraryCategory::getParameterLibraryId, id).remove();
simulationParameterLibraryCategoryObjectService.lambdaUpdate().eq(SimulationParameterLibraryCategoryObject::getParameterLibraryId, id).remove();
}
@@ -163,23 +166,37 @@ public class SimulationParameterLibraryServiceImpl extends ServiceImpl<Simulatio
@Override
public SdmResponse getSimulationParameterLibraryCategoryObject(Long ObjectId) {
SimulationParameterLibraryCategoryObject simulationParameterLibraryCategoryObject = simulationParameterLibraryCategoryObjectService.getById(ObjectId);
SimulationParameterLibraryCategory simulationParameterLibraryCategory = simulationParameterLibraryCategoryService.getById(simulationParameterLibraryCategoryObject.getParameterLibraryCategoryId());
SimulationParameterLibrary simulationParameterLibrary = this.getById(simulationParameterLibraryCategory.getParameterLibraryId());
SimulationParameterLibraryCategoryObjectResp simulationParameterLibraryCategoryObjectResp = new SimulationParameterLibraryCategoryObjectResp();
BeanUtils.copyProperties(simulationParameterLibraryCategoryObject, simulationParameterLibraryCategoryObjectResp);
simulationParameterLibraryCategoryObjectResp.setParameterLibraryId(simulationParameterLibrary.getId());
simulationParameterLibraryCategoryObjectResp.setParameterLibraryName(simulationParameterLibrary.getParameterLibraryName());
simulationParameterLibraryCategoryObjectResp.setParameterLibraryCategoryId(simulationParameterLibraryCategory.getId());
simulationParameterLibraryCategoryObjectResp.setParameterLibraryCategoryName(simulationParameterLibraryCategory.getParameterLibraryCategoryName());
InputStream minioInputStream = dataFileService.getMinioInputStream(simulationParameterLibraryCategoryObject.getFileId());
// 使用Jackson解析JSON
try {
ObjectMapper objectMapper = new ObjectMapper();
JsonNode jsonNode = objectMapper.readTree(minioInputStream);
List<Map<String, Object>> parameterJsonValueFromJsonNode = parseJsonArray(jsonNode);
simulationParameterLibraryCategoryObjectResp.setParameterJsonValue(parameterJsonValueFromJsonNode);
} catch (IOException e) {
InputStream minioInputStream = dataFileService.getMinioInputStream(simulationParameterLibraryCategoryObject.getFileId());
if (ObjectUtils.isNotEmpty(minioInputStream)) {
ObjectMapper objectMapper = new ObjectMapper();
JsonNode jsonNode = objectMapper.readTree(minioInputStream);
List<Map<String, Object>> parameterJsonValueFromJsonNode = parseJsonArray(jsonNode);
simulationParameterLibraryCategoryObjectResp.setParameterJsonValue(parameterJsonValueFromJsonNode);
} else {
// 兜底操作可能是清库了或者数据被删除了删除掉参数对象的json文件信息
simulationParameterLibraryCategoryObject.setFileId(null);
simulationParameterLibraryCategoryObject.setFileName(null);
simulationParameterLibraryCategoryObjectService.updateById(simulationParameterLibraryCategoryObject);
log.info("参数对象json文件信息被删除了请检查参数对象ID为{}的参数对象信息", ObjectId);
}
BeanUtils.copyProperties(simulationParameterLibraryCategoryObject, simulationParameterLibraryCategoryObjectResp);
SimulationParameterLibraryCategory simulationParameterLibraryCategory = simulationParameterLibraryCategoryService.getById(simulationParameterLibraryCategoryObject.getParameterLibraryCategoryId());
SimulationParameterLibrary simulationParameterLibrary = this.getById(simulationParameterLibraryCategory.getParameterLibraryId());
simulationParameterLibraryCategoryObjectResp.setParameterLibraryId(simulationParameterLibrary.getId());
simulationParameterLibraryCategoryObjectResp.setParameterLibraryName(simulationParameterLibrary.getParameterLibraryName());
simulationParameterLibraryCategoryObjectResp.setParameterLibraryCategoryId(simulationParameterLibraryCategory.getId());
simulationParameterLibraryCategoryObjectResp.setParameterLibraryCategoryName(simulationParameterLibraryCategory.getParameterLibraryCategoryName());
} catch (Exception e) {
log.error("解析JSON文件时发生错误", e);
}
return SdmResponse

View File

@@ -96,4 +96,33 @@
AND createYearMonth = #{targetYm}
GROUP BY userId
</select>
</mapper>
<select id="selectBigFiles" resultType="com.sdm.data.model.entity.FileStorage">
SELECT file_storage.* FROM file_storage
left join file_metadata_info on file_storage.fileId = file_metadata_info.id
<where>
file_metadata_info.id is not null
<if test="queryBigFileReq.dirId != null">
AND dirId = #{queryBigFileReq.dirId}
</if>
<if test="queryBigFileReq.fileSuffix != null and queryBigFileReq.fileSuffix != ''">
AND fileSuffix = #{queryBigFileReq.fileSuffix}
</if>
<if test="queryBigFileReq.fileBizType != null">
AND fileBizType = #{queryBigFileReq.fileBizType}
</if>
<if test="queryBigFileReq.fileName != null and queryBigFileReq.fileName != ''">
AND fileName LIKE CONCAT('%', #{queryBigFileReq.fileName}, '%')
</if>
<if test="queryBigFileReq.startTime != null">
AND createTime &gt;= #{queryBigFileReq.startTime}
</if>
<if test="queryBigFileReq.endTime != null">
AND createTime &lt;= #{queryBigFileReq.endTime}
</if>
<if test="fileSizeInBytes != null">
AND fileSize &gt; #{fileSizeInBytes}
</if>
</where>
</select>
</mapper>