Explorar el Código

关联原生电子文件到归档

huangtf hace 2 años
padre
commit
646a2e0569

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

@@ -122,4 +122,7 @@ public interface ArchiveFileClient {
     //批量查询案卷下的文件
     @PostMapping(API_PREFIX + "/batchSearchArchiveFile")
     List<ArchiveFile> batchSearchArchiveFile(@RequestBody List<Long> ids);
+
+    @PostMapping(API_PREFIX + "/addOrUpdateArchiveFileBusinessData")
+    void addOrUpdateArchiveFileBusinessData(@RequestParam Long nodeId, @RequestParam Long keyId, @RequestParam Long contractId, @RequestParam String newFileUrl);
 }

+ 3 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/feign/WbsTreeContractClient.java

@@ -174,4 +174,7 @@ public interface WbsTreeContractClient {
     @PostMapping(API_PREFIX + "/updateTabFileTypeByPkeyIds")
     void updateTabFileTypeByPkeyIds(@RequestParam List<Long> updatePKeyIds);
 
+    @GetMapping(API_PREFIX + "/getNextPkeyIdByNodeType")
+    Long getNextPkeyIdByNodeType(@RequestParam Long pkeyId, @RequestParam Long nodeType);
+
 }

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

@@ -12,6 +12,7 @@ import org.springblade.business.entity.ArchiveFile;
 import org.springblade.business.feign.ArchiveFileClient;
 import org.springblade.business.mapper.ArchiveFileMapper;
 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.common.vo.FileSize;
@@ -34,6 +35,8 @@ public class ArchiveFileClientImpl implements ArchiveFileClient {
 
     private ContractClient contractClient;
 
+    private final ITaskService iTaskService;
+
 
     @Override
     public void saveArchiveFile(ArchiveFileVO vo) {
@@ -257,4 +260,9 @@ public class ArchiveFileClientImpl implements ArchiveFileClient {
     }
 
 
+    @Override
+    public void addOrUpdateArchiveFileBusinessData(Long nodeId, Long keyId, Long contractId, String newFileUrl) {
+        iTaskService.addOrUpdateArchiveFileBusinessData(nodeId,keyId,contractId,newFileUrl);
+    }
+
 }

+ 2 - 0
blade-service/blade-business/src/main/java/org/springblade/business/service/ITaskService.java

@@ -81,4 +81,6 @@ public interface ITaskService extends BaseService<Task> {
      * 获取当前合同段所有上报资料的上报批次
      */
     Map<String, String> queryContractAllBatch(String contract);
+
+    void addOrUpdateArchiveFileBusinessData(Long nodeId, Long keyId, Long contractId, String newFileUrl);
 }

+ 23 - 0
blade-service/blade-business/src/main/java/org/springblade/business/service/impl/TaskServiceImpl.java

@@ -976,5 +976,28 @@ public class TaskServiceImpl extends BaseServiceImpl<TaskMapper, Task> implement
                 .set(ArchiveFile::getEVisaFile, newFileUrl);
         this.archiveFileService.update(wrapper.in(ArchiveFile::getId, Arrays.asList(formDataId.split(","))));
     }
+    @Override
+    public void addOrUpdateArchiveFileBusinessData(Long nodeId, Long keyId, Long contractId, String newFileUrl) {
+        ArchiveFile archiveFile = this.archiveFileService.getOne(Wrappers.<ArchiveFile>lambdaQuery()
+                .eq(ArchiveFile::getNodeId, nodeId.toString())
+                .eq(ArchiveFile::getNodeExtId, keyId)
+                .eq(ArchiveFile::getIsDeleted, 0));
+
+        if (archiveFile != null) {
+            archiveFile.setEVisaFile(newFileUrl);
+            archiveFile.setPdfFileUrl(newFileUrl); // 这里将pdfFileUrl也更新了,因为需求中没有限制只能更新eVisaFile属性
+            this.archiveFileService.updateById(archiveFile);
+
+        } else {
+            archiveFile = new ArchiveFile();
+            archiveFile.setNodeId(nodeId.toString());
+            archiveFile.setNodeExtId(keyId);
+            archiveFile.setContractId(contractId.toString());
+            archiveFile.setStatus(2); // 这里是新增归档文件,所以状态为1(已完成)
+            archiveFile.setEVisaFile(newFileUrl);
+            archiveFile.setPdfFileUrl(newFileUrl);
+            this.archiveFileService.save(archiveFile);
+        }
+    }
 
 }

+ 26 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/feign/WbsTreeContractClientImpl.java

@@ -388,4 +388,30 @@ public class WbsTreeContractClientImpl implements WbsTreeContractClient {
         vosResult.add(vos);
     }
 
+    /**
+     * 根据pkid,找符合nodetype的祖先节点
+     * @param pkeyId
+     * @param nodeType
+     * @return
+     */
+    @Override
+    public Long getNextPkeyIdByNodeType(Long pkeyId, Long nodeType) {
+        WbsTreeContract one = this.wbsTreeContractService.getOne(Wrappers.<WbsTreeContract>lambdaQuery().eq(WbsTreeContract::getPKeyId, pkeyId));
+        if (one != null) {
+
+            int max = 20;
+            int loop = 0;
+            String parentId = one.getParentId().toString();
+            while (loop < max && StringUtils.isNotEquals(0, parentId)) {
+                WbsTreeContract next = this.wbsTreeContractService.getOne(Wrappers.<WbsTreeContract>lambdaQuery().eq(WbsTreeContract::getContractId, one.getContractId()).eq(WbsTreeContract::getId, parentId));
+                if(next.getNodeType().equals(nodeType)){
+                    return next.getPKeyId();
+                }
+                parentId = next.getParentId().toString();
+                loop++;
+            }
+        }
+        return null; // 如果没有满足条件的节点,返回null
+    }
+
 }

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

@@ -21,6 +21,7 @@ import com.mixsmart.utils.StringUtils;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.core.toolkit.StringPool;
 import lombok.AllArgsConstructor;
+import org.springblade.business.feign.ArchiveFileClient;
 import org.springblade.core.log.exception.ServiceException;
 import org.springblade.core.secure.BladeUser;
 import org.springblade.core.secure.utils.AuthUtil;
@@ -32,6 +33,7 @@ import org.springblade.manager.entity.ArchiveTree;
 import org.springblade.manager.entity.ArchiveTreeContract;
 import org.springblade.manager.entity.ContractInfo;
 import org.springblade.manager.entity.ProjectInfo;
+import org.springblade.manager.feign.WbsTreeContractClient;
 import org.springblade.manager.mapper.ArchiveTreeMapper;
 import org.springblade.manager.service.IArchiveTreeService;
 import org.springblade.manager.service.IContractInfoService;
@@ -71,6 +73,10 @@ public class ArchiveTreeContractServiceImpl extends BaseServiceImpl<ArchiveTreeC
 
 	private final ArchiveTreeContractSyncImpl archiveTreeContractSync;
 
+	private final WbsTreeContractClient wbsTreeContractClient;
+
+	private final ArchiveFileClient archiveFileClient;
+
 
 
 
@@ -998,11 +1004,12 @@ public class ArchiveTreeContractServiceImpl extends BaseServiceImpl<ArchiveTreeC
 	 * @return
 	 */
 
-	public ArchiveTreeContract getWbsNode(String contractId,Long pkId) {
+	public ArchiveTreeContract getWbsNodeFromWbsKeyId(Long contractId,Long pkId,Long attachId) {
 		List<ArchiveTreeContract> archiveTreeContracts =  baseMapper.selectList(Wrappers.<ArchiveTreeContract>query().lambda()
 				.eq(ArchiveTreeContract::getContractId, contractId)
 				.eq(ArchiveTreeContract::getIsDeleted, 0)
-				.eq(ArchiveTreeContract::getExtKeyId, pkId));
+				.eq(ArchiveTreeContract::getExtKeyId, pkId)
+				.eq(ArchiveTreeContract::getExtAttachId, attachId));
 		if (archiveTreeContracts == null || archiveTreeContracts.size() ==0) {
 			return null;
 		}
@@ -1012,22 +1019,15 @@ public class ArchiveTreeContractServiceImpl extends BaseServiceImpl<ArchiveTreeC
 
 	/**
 	 *
-	 * @param wbsId
+	 * @param keyId
 	 * @param level
 	 * @return
 	 */
-	public Long getWbsKeyIdFromLayer(Long wbsId,Long level){
-		return 0L;
+	public Long getWbsKeyIdFromLayer(Long keyId,Long level){
+		return wbsTreeContractClient.getNextPkeyIdByNodeType(keyId,level);
 	}
 
-	/**
-	 *
-	 * @param wbskeyId
-	 * @return
-	 */
-	public Long getNodeIdFromWbsKeyId(Long wbskeyId,Long attachId){
-		return 0L;
-	}
+
 
 	/**
 	 * 根据 wbsId,contractId 获取u_information_query得信息,
@@ -1046,11 +1046,10 @@ public class ArchiveTreeContractServiceImpl extends BaseServiceImpl<ArchiveTreeC
 
 	/**
 	 * 将电签文件写到
-	 * @param wbsId
 	 * @param contractId
 	 * @return
 	 */
-	public Integer writeBusinessData(Long wbsId, Long contractId) {
+	public Integer writeBusinessData(Long keyId, Long contractId, String newFileUrl) {
 		// 这里省略了具体实现,可根据业务需求编写相应的逻辑
 
 		List<ArchiveTreeContract> associatedNodes = getWbsAssociatedNodes(contractId.toString());
@@ -1066,11 +1065,12 @@ public class ArchiveTreeContractServiceImpl extends BaseServiceImpl<ArchiveTreeC
 				level = Long.parseLong(associatedNode.getDisplayHierarchy());
 			}
 
-			Long keyId = getWbsKeyIdFromLayer(wbsId,level);
-			Long nodeId = getNodeIdFromWbsKeyId(keyId,attachId);
-
-			addOrUpDateArchiveFile(nodeId,wbsId,contractId);
+			Long levelkeyId = getWbsKeyIdFromLayer(keyId,level);
+			ArchiveTreeContract node = getWbsNodeFromWbsKeyId(contractId,keyId,attachId);
+			if (node!= null ) {
 
+				archiveFileClient.addOrUpdateArchiveFileBusinessData(node.getId(),keyId,contractId,newFileUrl);
+			}
 		}