瀏覽代碼

自动组卷

luok 2 年之前
父節點
當前提交
476b10d7c1

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

@@ -89,6 +89,15 @@ public interface ArchiveFileClient {
     @PostMapping(API_PREFIX + "/getListByNodeID")
     List<ArchiveFile> getListByNodeID(@RequestParam String nodeId);
 
+
+    /**
+     * 获取案卷下的文件
+     * @param archiveId
+     * @return
+     */
+    @PostMapping(API_PREFIX + "/getArchiveFileByArchiveID")
+    List<ArchiveFile> getArchiveFileByArchiveID(@RequestParam Long archiveId);
+
     /**
      * 项目下所有工序资料PDF
      * @param projectId

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

@@ -71,9 +71,6 @@
         <if test="vo.projectId != null and vo.projectId != ''">
             and project_id = #{vo.projectId}
         </if>
-        <if test="vo.contractId != null and vo.contractId != ''">
-            and contract_id = #{vo.contractId}
-        </if>
         <if test="vo.isAutoFile != null and vo.isAutoFile != ''">
             and is_auto_file = #{vo.isAutoFile}
         </if>
@@ -101,9 +98,6 @@
         <if test="vo.projectId != null and vo.projectId != ''">
             and project_id = #{vo.projectId}
         </if>
-        <if test="vo.contractId != null and vo.contractId != ''">
-            and contract_id = #{vo.contractId}
-        </if>
         <choose>
             <when test="vo.isArchive != null and vo.isArchive != ''">
                 and  is_auto_file = #{vo.isArchive}

+ 7 - 5
blade-service/blade-archive/src/main/java/org/springblade/archive/service/impl/ArchiveAutoPdfServiceImpl.java

@@ -227,6 +227,9 @@ public class ArchiveAutoPdfServiceImpl implements IArchiveAutoPdfService {
             numberBacks.add(ARCHIVE_NUMBER[3]);
         }
 
+        String secretLevel = archivesAuto.getSecretLevel();
+        String storageTime = archivesAuto.getStorageTime();
+
         Map<String,Object> variables = dataSourceBuilder(archivesAuto,archiveFileList);
 
         // 使用生成的档案号码字符串链表生成档案 PDF 文件
@@ -250,6 +253,8 @@ public class ArchiveAutoPdfServiceImpl implements IArchiveAutoPdfService {
 
         String joinedUrls = String.join(", ", frontUrls);
         archivesAuto.setOutUrl(joinedUrls);
+        archivesAuto.setSecretLevel(secretLevel);
+        archivesAuto.setStorageTime(storageTime);
     }
 
     /**
@@ -744,13 +749,10 @@ public class ArchiveAutoPdfServiceImpl implements IArchiveAutoPdfService {
         Long projectId = archive.getProjectId();
         archive.setFileNumber(fileNumber);
 
-        List<ArchiveFile> archiveFiles = archiveFileClient.listWrappers(Wrappers.<ArchiveFile>lambdaQuery()
-                .eq(ArchiveFile::getArchiveId, archive.getId())
-                .eq(ArchiveFile::getIsArchive, 0)
-                .eq(ArchiveFile::getIsDeleted,0)
-                .orderByAsc(ArchiveFile::getSort));
+        List<ArchiveFile> archiveFiles = archiveFileClient.getArchiveFileByArchiveID(archive.getId());
 
         buildArchiveFrontPdfs(projectId,archive,archiveFiles);
+
         return true;
     }
 

+ 16 - 8
blade-service/blade-archive/src/main/java/org/springblade/archive/service/impl/ArchivesAutoServiceImpl.java

@@ -466,12 +466,11 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
 			for(String nodeId:nodeIdSet){
 				ArchiveTreeContract treeNode = archiveTreeContractClient.getArchiveTreeContractById(Long.parseLong(nodeId));
 				String nodeName = treeNode.getNodeName();
-				archiveName=archiveName+nodeName;
+				archiveName=archiveName+" "+nodeName;
 			}
-
 		}else{
 			//不存在跨节点  项目名称+节点名称
-			archiveName=projectName+node.getNodeName();
+			archiveName=projectName+" "+node.getNodeName();
 		}
 
 		//TODO wbs节点
@@ -513,6 +512,8 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
 
 		builtFilePageNo(archivesAuto,waitArchiveFiles);//生成文件页码
 
+
+
 		for(ArchiveFile file:waitArchiveFiles){
 			file.setArchiveId(archivesAutoId);//设置文件所属案卷
 			file.setIsArchive(1);
@@ -997,13 +998,20 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
 			if (archivesAutos == null || archivesAutos.size() == 0) {
 				continue;
 			}
-			String fileNumberPrefix=subList.get(0).getFileNumberPrefix();
-			String archiveNameSuffix=subList.get(0).getArchiveNameSuffix();
-			if (StringUtils.isEmpty(archiveNameSuffix)) {
-				archiveNameSuffix = "";
+			//准备节点id-节点档号前缀Map
+			Map<String,String> node_fileNumberPrefixMap= new HashMap<>();
+			for(ArchiveTreeContract node:subList){
+				node_fileNumberPrefixMap.put(node.getId().toString(),node.getFileNumberPrefix());
 			}
+
 			for (ArchivesAuto archivesAuto: archivesAutos) {
-				String fileNumber = fileNumberPrefix + index + archiveNameSuffix;
+				String nodeId = archivesAuto.getNodeId().toString();
+				String fileNumberPrefix ="";
+				if(node_fileNumberPrefixMap.containsKey(nodeId)){
+					fileNumberPrefix=node_fileNumberPrefixMap.get(nodeId);
+				}
+
+				String fileNumber = fileNumberPrefix + index;
 				if (archiveAutoPdfService.refreshFileNumber(archivesAuto,fileNumber)){
 					changeList.add(archivesAuto);
 				}

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

@@ -208,6 +208,13 @@ public class ArchiveFileClientImpl implements ArchiveFileClient {
         return files;
     }
 
+    @Override
+    public List<ArchiveFile> getArchiveFileByArchiveID(Long archiveId) {
+        List<ArchiveFile> files = fileMapper.getArchiveFileByArchiveID(archiveId);
+        return files;
+    }
+
+
     @Override
     public List<ArchiveFile> getAllPdfFileUrlByProjectIdAndFileType(Long projectId) {
         return fileMapper.getAllPdfFileUrlByProjectIdAndFileType(projectId);

+ 3 - 0
blade-service/blade-business/src/main/java/org/springblade/business/mapper/ArchiveFileMapper.java

@@ -77,6 +77,9 @@ public interface ArchiveFileMapper extends BaseMapper<ArchiveFile> {
 
 	public List<ArchiveFile> getListByNodeID(@Param("nodeId") String nodeId);
 
+	public List<ArchiveFile> getArchiveFileByArchiveID(@Param("archiveId") Long archiveId);
+
+
 	//后续应该加入文件类型
     List<ArchiveFile> getAllPdfFileUrlByProjectIdAndFileType(@Param("projectId")Long projectId);
 }

+ 10 - 0
blade-service/blade-business/src/main/java/org/springblade/business/mapper/ArchiveFileMapper.xml

@@ -328,6 +328,16 @@
           is_deleted = 0
           order by sort
     </select>
+
+    <select id="getArchiveFileByArchiveID" resultMap="archiveFileResultMap">
+        select * from u_archive_file
+        where
+            archive_id = #{archiveId}   and
+            is_deleted = 0
+        order by sort
+    </select>
+
+
     <select id="getAllPdfFileUrlByProjectIdAndFileType" resultType="org.springblade.business.entity.ArchiveFile">
         SELECT file_name,pdf_file_url
         FROM u_archive_file WHERE project_id = #{projectId}

+ 2 - 1
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/ArchiveTreeContractMapper.xml

@@ -331,7 +331,8 @@
         order by tree_sort asc
     </select>
     <select id="getListByProjectId" resultType="org.springblade.manager.entity.ArchiveTreeContract">
-        select id,project_id as projectId,parent_id as parentId,ancestors,node_name as nodeName,status,tree_code as treeCode, ext_type as extType, is_deleted as isDeleted,create_time as createTime
+        select id,project_id as projectId,parent_id as parentId,ancestors,node_name as nodeName,status,tree_code as treeCode, ext_type as extType,
+               is_deleted as isDeleted,create_time as createTime, file_number_prefix as fileNumberPrefix
         from m_archive_tree_contract
         where project_id=#{projectId} and is_deleted = 0 order by tree_sort asc;
     </select>

+ 19 - 17
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ArchiveAutoRuleSyncImpl.java

@@ -288,23 +288,25 @@ public class ArchiveAutoRuleSyncImpl {
                             //这个节点是刚从项目级同步过来,规则值还是项目级的。而这个archiveAutoNodeId是项目级设置的最高并卷节点的ID
                             //用archiveAutoNodeId通过proIdToContact_Map找出对应的客户级节点
                             List<ArchiveTreeContractVO2> contract_select_vo2s = proIdToContact_Map.get(archiveAutoNodeId);
-                            if(contract_select_vo2s.size()==1){
-                                //一个系统级节点对应了一个项目级节点
-                                Long pro_archiveAutoNodeId = contract_select_vo2s.get(0).getId();
-                                contractVO2.setArchiveAutoNodeId(pro_archiveAutoNodeId);//设置项目级的archiveAutoNodeId
-                                contractVO2.setFlag(1);
-                            }else{
-                                //一个系统级节点对应了多个项目级节点(项目级添加加节点的情况)
-                                for(ArchiveTreeContractVO2 contract_select_vo2:contract_select_vo2s){
-                                    //系统级对应多个节点时,用当前节点的ancestors去对比pro_select_vo2中的id,当前节点的ancestors必有上级节点的id。或当前节点id=pro_select_vo2中的id
-                                    Long contract_select_id = contract_select_vo2.getId();//客户级的最高并卷节点id
-                                    String ancestors = contractVO2.getAncestors();//当前节点ancestors
-                                    Long contractVO2_id = contractVO2.getId();//当前节点id
-
-                                    if(ancestors.contains(contract_select_id.toString()) ||  contractVO2_id.equals(contract_select_id)){
-                                        contractVO2.setArchiveAutoNodeId(contract_select_vo2.getId());//设置客户级的archiveAutoNodeId
-                                        contractVO2.setFlag(1);
-                                        break;
+                            if(contract_select_vo2s!=null){
+                                if(contract_select_vo2s.size()==1){
+                                    //一个系统级节点对应了一个项目级节点
+                                    Long pro_archiveAutoNodeId = contract_select_vo2s.get(0).getId();
+                                    contractVO2.setArchiveAutoNodeId(pro_archiveAutoNodeId);//设置项目级的archiveAutoNodeId
+                                    contractVO2.setFlag(1);
+                                }else{
+                                    //一个系统级节点对应了多个项目级节点(项目级添加加节点的情况)
+                                    for(ArchiveTreeContractVO2 contract_select_vo2:contract_select_vo2s){
+                                        //系统级对应多个节点时,用当前节点的ancestors去对比pro_select_vo2中的id,当前节点的ancestors必有上级节点的id。或当前节点id=pro_select_vo2中的id
+                                        Long contract_select_id = contract_select_vo2.getId();//客户级的最高并卷节点id
+                                        String ancestors = contractVO2.getAncestors();//当前节点ancestors
+                                        Long contractVO2_id = contractVO2.getId();//当前节点id
+
+                                        if(ancestors.contains(contract_select_id.toString()) ||  contractVO2_id.equals(contract_select_id)){
+                                            contractVO2.setArchiveAutoNodeId(contract_select_vo2.getId());//设置客户级的archiveAutoNodeId
+                                            contractVO2.setFlag(1);
+                                            break;
+                                        }
                                     }
                                 }
                             }