feat: 添加企业文件管理功能及相关任务类
refactor: 重构企业文件验证和移动逻辑 fix: 修复企业合规验证逻辑及路径处理问题 docs: 添加VerifyContext工具类及相关文档 style: 优化代码格式及注释
This commit is contained in:
@@ -0,0 +1,123 @@
|
||||
package com.ecep.contract.task;
|
||||
|
||||
import java.io.File;
|
||||
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
import com.ecep.contract.MessageHolder;
|
||||
import com.ecep.contract.service.CompanyFileService;
|
||||
import com.ecep.contract.service.CompanyService;
|
||||
import com.ecep.contract.vo.CompanyFileVo;
|
||||
import com.ecep.contract.vo.CompanyVo;
|
||||
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
/**
|
||||
* 公司文件移动任务类
|
||||
* 用于将文件从老系统中移动到指定的企业目录中
|
||||
*/
|
||||
public class CompanyFileMoveTasker extends Tasker<Boolean> {
|
||||
@Getter
|
||||
@Setter
|
||||
private CompanyVo company;
|
||||
|
||||
@Getter
|
||||
private boolean filesMoved = false;
|
||||
|
||||
@Override
|
||||
protected Boolean execute(MessageHolder holder) throws Exception {
|
||||
updateTitle("移动公司文件");
|
||||
updateProgress(0, 100);
|
||||
|
||||
if (company == null) {
|
||||
holder.error("公司对象为空");
|
||||
updateProgress(100, 100);
|
||||
return false;
|
||||
}
|
||||
|
||||
try {
|
||||
holder.info("开始移动公司文件:" + company.getName());
|
||||
updateProgress(10, 100);
|
||||
|
||||
// 获取CompanyFileService
|
||||
CompanyFileService companyFileService = getCachedBean(CompanyFileService.class);
|
||||
CompanyService companyService = getCachedBean(CompanyService.class);
|
||||
|
||||
// 获取公司的所有文件
|
||||
holder.info("获取公司文件列表...");
|
||||
java.util.List<CompanyFileVo> list = companyFileService.findByCompany(company);
|
||||
updateProgress(20, 100);
|
||||
|
||||
if (list.isEmpty()) {
|
||||
holder.info("该公司没有文件需要移动");
|
||||
updateProgress(100, 100);
|
||||
return false;
|
||||
}
|
||||
|
||||
holder.info("共有" + list.size() + "个文件需要处理");
|
||||
|
||||
// 确保公司目录存在
|
||||
holder.info("检查并创建公司目录...");
|
||||
if (companyService.makePathAbsent(company, holder)) {
|
||||
company = companyService.save(company);
|
||||
holder.info("公司目录已创建");
|
||||
}
|
||||
updateProgress(30, 100);
|
||||
|
||||
// 检查公司路径
|
||||
String path = company.getPath();
|
||||
if (!StringUtils.hasText(path)) {
|
||||
holder.error("异常, 企业目录未设置");
|
||||
updateProgress(100, 100);
|
||||
return false;
|
||||
}
|
||||
|
||||
File companyPath = new File(path);
|
||||
int movedCount = 0;
|
||||
int totalFiles = list.size();
|
||||
|
||||
// 逐个处理文件
|
||||
for (int i = 0; i < list.size(); i++) {
|
||||
CompanyFileVo companyFile = list.get(i);
|
||||
String filePath = companyFile.getFilePath();
|
||||
|
||||
// 更新进度
|
||||
updateProgress(30 + (i * 70) / totalFiles, 100);
|
||||
|
||||
if (StringUtils.hasText(filePath)) {
|
||||
File file = new File(filePath);
|
||||
if (file.exists()) {
|
||||
if (file.getParentFile().equals(companyPath)) {
|
||||
holder.info("文件已在目标位置:" + file.getName());
|
||||
continue;
|
||||
}
|
||||
|
||||
File dest = new File(companyPath, file.getName());
|
||||
holder.info("移动文件:" + file.getName() + " -> " + companyPath.getName());
|
||||
|
||||
if (file.renameTo(dest)) {
|
||||
companyFile.setFilePath(dest.getAbsolutePath());
|
||||
companyFileService.save(companyFile);
|
||||
holder.info("文件移动成功:" + file.getName());
|
||||
movedCount++;
|
||||
filesMoved = true;
|
||||
} else {
|
||||
holder.warn("文件移动失败:" + file.getName());
|
||||
}
|
||||
} else {
|
||||
holder.warn("文件不存在:" + filePath);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
holder.info("文件移动完成,成功移动" + movedCount + "个文件");
|
||||
updateProgress(100, 100);
|
||||
return filesMoved;
|
||||
} catch (Exception e) {
|
||||
holder.error("文件移动过程中发生错误:" + e.getMessage());
|
||||
updateProgress(100, 100);
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user