瀏覽代碼

档案合并案卷

cr 1 月之前
父節點
當前提交
3f32a40c02

+ 3 - 0
blade-service-api/blade-business-api/src/main/java/org/springblade/business/feign/ArchiveFileClient.java

@@ -164,4 +164,7 @@ public interface ArchiveFileClient {
 
     @PostMapping(API_PREFIX + "/saveArchiveFileByBIM")
     void saveArchiveFileByBIM(@RequestBody ArchiveFile archiveFile);
+
+    @PostMapping(API_PREFIX + "/getArchiveFileByArchiveIds")
+    List<ArchiveFile> getArchiveFileByArchiveIds(@RequestParam String archiveIds);
 }

+ 42 - 4
blade-service/blade-archive/src/main/java/org/springblade/archive/controller/ArchivesAutoController.java

@@ -45,6 +45,7 @@ import org.springblade.archive.utils.FileUtils;
 import org.springblade.archive.vo.*;
 import org.springblade.business.entity.ArchiveFile;
 import org.springblade.business.entity.InformationQuery;
+import org.springblade.business.feign.ArchiveFileClient;
 import org.springblade.common.constant.CommonConstant;
 import org.springblade.common.utils.CommonUtil;
 import org.springblade.common.utils.SnowFlakeUtil;
@@ -65,6 +66,7 @@ import org.springblade.system.cache.ParamCache;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.MediaType;
 import org.springframework.jdbc.core.JdbcTemplate;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.bind.annotation.RequestParam;
 import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -76,10 +78,7 @@ import org.springframework.web.multipart.MultipartFile;
 
 import java.io.File;
 import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 import java.util.concurrent.ExecutorService;
 import java.util.stream.Collectors;
 
@@ -110,6 +109,9 @@ public class ArchivesAutoController extends BladeController {
 	private ITraceLogService iTraceLogService;
 
     private final JdbcTemplate jdbcTemplate;
+    @Autowired
+    private ArchiveFileClient archiveFileClient;
+
 	/**
 	 * 详情
 	 */
@@ -513,6 +515,42 @@ public class ArchivesAutoController extends BladeController {
 		}
 
 	}
+	@PostMapping("/reCreateArchiveAuto")
+	@ApiOperationSupport(order = 13)
+	@ApiOperation(value = "重新生成案卷", notes = "传入ids")
+	@Transactional
+	public R reCreateArchiveAuto(String ids){
+		//先查出勾选的案卷
+		List<ArchivesAuto> archivesAutoList=archivesAutoService.selectArchiveAutosByIds(ids);
+		if(archivesAutoList.size()<=1){
+			return R.fail("请选择多个案卷进行合并");
+		}
+		archivesAutoList.sort(Comparator.comparingInt(a -> {
+			String[] parts = a.getName().split("_");
+			return Integer.parseInt(parts[parts.length - 1]); // 取最后一个部分作为数字
+		}));
+		//根据档号后缀排序 拿到第一个
+		ArchivesAuto auto = archivesAutoList.get(0);
+		//查出所有案卷文件
+		List<ArchiveFile>archiveFileList=archiveFileClient.getArchiveFileByArchiveIds(ids);
+		//将除第一个以外的案卷文件archiveId 设置成第一个的id
+		List<ArchiveFile>updateArchiveFileList=new ArrayList<>();
+		for (ArchiveFile file : archiveFileList) {
+			if (!file.getArchiveId().equals(auto.getId())) {
+				file.setArchiveId(auto.getId());
+				updateArchiveFileList.add(file);
+			}
+		}
+		archiveFileClient.updateArchiveFile(updateArchiveFileList);
+		//合并文件题名 暂时用第一个案卷的题目 以后用deepseek完成合并
+
+		//删除其他案卷
+		archivesAutoList.remove(auto);
+		archivesAutoService.deleteLogic(archivesAutoList.stream().map(o->o.getId()).collect(Collectors.toList()));
+		//设置案卷页码和四要素
+		archivesAutoService.reCreateArchiveAuto(auto, archiveFileList);
+		return R.status(true);
+	}
 
 	/**
 	 * 预览案卷文件

+ 3 - 0
blade-service/blade-archive/src/main/java/org/springblade/archive/mapper/ArchivesAutoMapper.java

@@ -229,4 +229,7 @@ public interface ArchivesAutoMapper extends BaseMapper<ArchivesAuto> {
 
     List<ArchivesAutoVO4> selectAllArchiveAuto(@Param("projectId")Long projectId, @Param("contractId") Long contractId, @Param("nodeIds") List<String> nodeIds,@Param("isArchive")Integer isArchive);
 
+    List<ArchivesAuto> selectArchiveAutosByIds(@Param("ids")String ids);
+
+
 }

+ 7 - 0
blade-service/blade-archive/src/main/java/org/springblade/archive/mapper/ArchivesAutoMapper.xml

@@ -216,6 +216,7 @@
         <result column="sort_num" property="sortNum"/>
     </resultMap>
 
+
     <select id="approvalFile" resultType="org.springblade.archive.vo.ArchivesAutoVO$ApprovalFile">
         <if test="archiveId!=null">
             select * from u_archive_file where archive_id = #{archiveId} order by sort
@@ -1434,4 +1435,10 @@
         </foreach>
         ORDER BY uaa.auto_file_sort Asc
     </select>
+    <select id="selectArchiveAutosByIds" resultType="org.springblade.archive.entity.ArchivesAuto">
+        select * from u_archives_auto where id in
+        <foreach collection="ids" item="id" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </select>
 </mapper>

+ 6 - 0
blade-service/blade-archive/src/main/java/org/springblade/archive/service/IArchivesAutoService.java

@@ -26,6 +26,7 @@ import org.springblade.archive.entity.ArchivesAuto;
 import org.springblade.archive.entity.ExpertInspection;
 import org.springblade.archive.entity.JiLinArchiveAutoDto;
 import org.springblade.archive.vo.*;
+import org.springblade.business.entity.ArchiveFile;
 import org.springblade.core.mp.base.BaseService;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import org.springblade.core.mp.support.Query;
@@ -163,4 +164,9 @@ public interface IArchivesAutoService extends BaseService<ArchivesAuto> {
     boolean reBuildArchiveFrontPdfs(String archiveIds, Long projectId);
 
     boolean findAndReplace(List<ArchivesAuto> archivesAutos, FindAndReplaceDto dto);
+
+	void reCreateArchiveAuto(ArchivesAuto archivesAuto, List<ArchiveFile> waitArchiveFiles);
+
+	List<ArchivesAuto> selectArchiveAutosByIds(String ids);
+
 }

+ 14 - 0
blade-service/blade-archive/src/main/java/org/springblade/archive/service/impl/ArchivesAutoServiceImpl.java

@@ -1483,6 +1483,20 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
 		}
 	}
 
+
+	public void reCreateArchiveAuto(ArchivesAuto archivesAuto, List<ArchiveFile> waitArchiveFiles){
+		//生成四要素
+		archiveAutoPdfService.buildArchiveFrontPdfs(archivesAuto.getProjectId(), archivesAuto, waitArchiveFiles, true);
+		//生成页码
+		builtFilePageNo(archivesAuto, waitArchiveFiles);
+	}
+
+	@Override
+	public List<ArchivesAuto> selectArchiveAutosByIds(String ids) {
+		return this.baseMapper.selectArchiveAutosByIds(ids);
+	}
+
+
 	/**
 	 * 单独组卷规则组卷
 	 *

+ 5 - 0
blade-service/blade-business/src/main/java/org/springblade/business/feignClient/ArchiveFileClientImpl.java

@@ -346,4 +346,9 @@ public class ArchiveFileClientImpl implements ArchiveFileClient {
         iArchiveFileService.save(archiveFile);
     }
 
+    @Override
+    public List<ArchiveFile> getArchiveFileByArchiveIds(String archiveIds) {
+        return iArchiveFileService.getArchiveFileByArchivesId(archiveIds,null);
+    }
+
 }