feat: 添加文件上传服务实现(基础CRUD方法)
This commit is contained in:
@@ -0,0 +1,104 @@
|
||||
package com.ruoyi.ccdi.project.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.ruoyi.ccdi.project.domain.dto.CcdiFileUploadQueryDTO;
|
||||
import com.ruoyi.ccdi.project.domain.entity.CcdiFileUploadRecord;
|
||||
import com.ruoyi.ccdi.project.domain.vo.CcdiFileUploadStatisticsVO;
|
||||
import com.ruoyi.ccdi.project.mapper.CcdiFileUploadRecordMapper;
|
||||
import com.ruoyi.ccdi.project.service.ICcdiFileUploadService;
|
||||
import jakarta.annotation.Resource;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.util.StringUtils;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 文件上传服务实现
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2026-03-05
|
||||
*/
|
||||
@Slf4j
|
||||
@Service
|
||||
public class CcdiFileUploadServiceImpl implements ICcdiFileUploadService {
|
||||
|
||||
@Resource
|
||||
private CcdiFileUploadRecordMapper recordMapper;
|
||||
|
||||
@Override
|
||||
public Page<CcdiFileUploadRecord> selectPage(Page<CcdiFileUploadRecord> page,
|
||||
CcdiFileUploadQueryDTO queryDTO) {
|
||||
LambdaQueryWrapper<CcdiFileUploadRecord> queryWrapper = new LambdaQueryWrapper<>();
|
||||
|
||||
// 项目ID
|
||||
if (queryDTO.getProjectId() != null) {
|
||||
queryWrapper.eq(CcdiFileUploadRecord::getProjectId, queryDTO.getProjectId());
|
||||
}
|
||||
|
||||
// 文件状态
|
||||
if (StringUtils.hasText(queryDTO.getFileStatus())) {
|
||||
queryWrapper.eq(CcdiFileUploadRecord::getFileStatus, queryDTO.getFileStatus());
|
||||
}
|
||||
|
||||
// 文件名称(模糊查询)
|
||||
if (StringUtils.hasText(queryDTO.getFileName())) {
|
||||
queryWrapper.like(CcdiFileUploadRecord::getFileName, queryDTO.getFileName());
|
||||
}
|
||||
|
||||
// 上传人
|
||||
if (StringUtils.hasText(queryDTO.getUploadUser())) {
|
||||
queryWrapper.eq(CcdiFileUploadRecord::getUploadUser, queryDTO.getUploadUser());
|
||||
}
|
||||
|
||||
// 按上传时间倒序
|
||||
queryWrapper.orderByDesc(CcdiFileUploadRecord::getUploadTime);
|
||||
|
||||
return recordMapper.selectPage(page, queryWrapper);
|
||||
}
|
||||
|
||||
@Override
|
||||
public CcdiFileUploadStatisticsVO countByStatus(Long projectId) {
|
||||
// 查询统计数据
|
||||
List<Map<String, Object>> statusCounts = recordMapper.countByStatus(projectId);
|
||||
|
||||
// 组装 VO
|
||||
CcdiFileUploadStatisticsVO vo = new CcdiFileUploadStatisticsVO();
|
||||
vo.setUploading(0L);
|
||||
vo.setParsing(0L);
|
||||
vo.setParsedSuccess(0L);
|
||||
vo.setParsedFailed(0L);
|
||||
|
||||
long total = 0L;
|
||||
for (Map<String, Object> item : statusCounts) {
|
||||
String status = (String) item.get("status");
|
||||
Long count = ((Number) item.get("count")).longValue();
|
||||
total += count;
|
||||
|
||||
switch (status) {
|
||||
case "uploading" -> vo.setUploading(count);
|
||||
case "parsing" -> vo.setParsing(count);
|
||||
case "parsed_success" -> vo.setParsedSuccess(count);
|
||||
case "parsed_failed" -> vo.setParsedFailed(count);
|
||||
}
|
||||
}
|
||||
|
||||
vo.setTotal(total);
|
||||
return vo;
|
||||
}
|
||||
|
||||
@Override
|
||||
public CcdiFileUploadRecord getById(Long id) {
|
||||
return recordMapper.selectById(id);
|
||||
}
|
||||
|
||||
// batchUploadFiles 方法将在下一步实现
|
||||
@Override
|
||||
public String batchUploadFiles(Long projectId, MultipartFile[] files, String username) {
|
||||
// TODO: 将在下一步实现
|
||||
throw new UnsupportedOperationException("Method not implemented yet");
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user