|
@@ -8,6 +8,8 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
import lombok.AllArgsConstructor;
|
|
|
import org.apache.commons.lang.StringUtils;
|
|
|
+import org.springblade.archive.dto.FindAndReplaceDto;
|
|
|
+import org.springblade.archive.entity.ArchivesAuto;
|
|
|
import org.springblade.archive.vo.ArchivesAutoVO;
|
|
|
import org.springblade.business.entity.ArchiveFile;
|
|
|
import org.springblade.business.feign.ArchiveFileClient;
|
|
@@ -16,6 +18,7 @@ import org.springblade.business.service.IArchiveFileService;
|
|
|
import org.springblade.business.service.ITaskService;
|
|
|
import org.springblade.business.vo.ArchiveFileVO;
|
|
|
import org.springblade.common.utils.FileUtils;
|
|
|
+import org.springblade.core.log.exception.ServiceException;
|
|
|
import org.springblade.manager.entity.ContractInfo;
|
|
|
import org.springblade.manager.enums.StorageTypeEnum;
|
|
|
import org.springblade.manager.feign.ContractClient;
|
|
@@ -352,4 +355,82 @@ public class ArchiveFileClientImpl implements ArchiveFileClient {
|
|
|
return iArchiveFileService.getArchiveFileByArchivesId(archiveIds,null);
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public boolean findAndReplace(List<ArchiveFile> archiveFiles, FindAndReplaceDto dto) {
|
|
|
+ List<ArchiveFile> updates = new ArrayList<>();
|
|
|
+ for (ArchiveFile archiveFile : archiveFiles) {
|
|
|
+ ArchiveFile auto = new ArchiveFile();
|
|
|
+ if (dto.getType() == 1) {
|
|
|
+ if (StringUtils.isNotEmpty(dto.getQuery()) && StringUtils.isNotEmpty(dto.getReplace())) {
|
|
|
+ String name = archiveFile.getFileName();
|
|
|
+ if (StringUtils.isNotEmpty(name) && name.contains(dto.getQuery())) {
|
|
|
+ StringBuilder sb = new StringBuilder();
|
|
|
+ int lastIndex = 0;
|
|
|
+ // 查找所有匹配的位置
|
|
|
+ int index = name.indexOf(dto.getQuery());
|
|
|
+ while (index != -1) {
|
|
|
+ // 添加未处理部分(从上一个 lastIndex 到当前 index)
|
|
|
+ sb.append(name, lastIndex, index);
|
|
|
+
|
|
|
+ // 根据位置插入替换内容
|
|
|
+ if (dto.getPosition() != null) {
|
|
|
+ switch (dto.getPosition()) {
|
|
|
+ case 1: // 在查询内容前插入
|
|
|
+ sb.append(dto.getReplace());
|
|
|
+ sb.append(dto.getQuery());
|
|
|
+ break;
|
|
|
+ case 2: // 在查询内容后插入
|
|
|
+ sb.append(dto.getQuery());
|
|
|
+ sb.append(dto.getReplace());
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ throw new ServiceException("请选择正确的定位条件");
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ sb.append(dto.getQuery()); // 没有指定位置时保留原内容
|
|
|
+ }
|
|
|
+ // 更新 lastIndex 到当前匹配结束位置
|
|
|
+ lastIndex = index + dto.getQuery().length();
|
|
|
+ // 继续查找下一个匹配项
|
|
|
+ index = name.indexOf(dto.getQuery(), lastIndex);
|
|
|
+ }
|
|
|
+ // 添加剩余的部分
|
|
|
+ sb.append(name.substring(lastIndex));
|
|
|
+ // 更新名称
|
|
|
+ archiveFile.setFileName(sb.toString());
|
|
|
+ auto.setId(archiveFile.getId());
|
|
|
+ auto.setFileName(archiveFile.getFileName());
|
|
|
+ updates.add(auto);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else if (dto.getType() == 2) {
|
|
|
+ if (StringUtils.isNotEmpty(dto.getQuery()) && StringUtils.isNotEmpty(dto.getReplace())) {
|
|
|
+ String name = archiveFile.getFileName();
|
|
|
+ if (StringUtils.isNotEmpty(name) && name.contains(dto.getQuery())) {
|
|
|
+ String newName = name.replaceAll(dto.getQuery(), dto.getReplace());
|
|
|
+ archiveFile.setFileName(newName);
|
|
|
+ auto.setId(archiveFile.getId());
|
|
|
+ auto.setFileName(archiveFile.getFileName());
|
|
|
+ updates.add(auto);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ if (StringUtils.isNotEmpty(dto.getQuery())) {
|
|
|
+ String name = archiveFile.getFileName();
|
|
|
+ if (StringUtils.isNotEmpty(name) && name.contains(dto.getQuery())) {
|
|
|
+ String newName = name.replaceAll(dto.getQuery(), "");
|
|
|
+ archiveFile.setFileName(newName);
|
|
|
+ auto.setId(archiveFile.getId());
|
|
|
+ auto.setFileName(archiveFile.getFileName());
|
|
|
+ updates.add(auto);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (!updates.isEmpty()) {
|
|
|
+ return iArchiveFileService.updateBatchById(updates);
|
|
|
+ }
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+
|
|
|
}
|