Browse Source

Merge remote-tracking branch 'origin/master' into master

yangyj 2 years ago
parent
commit
2428a68acf

+ 4 - 0
blade-service-api/blade-business-api/src/main/java/org/springblade/business/entity/InformationQuery.java

@@ -125,4 +125,8 @@ public class InformationQuery extends BaseEntity {
     @ApiModelProperty("首件关联工序资料ids")
     private String sjRecordIds;
 
+
+    @ApiModelProperty("业务时间")
+    private String BusinessTime;
+
 }

+ 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 formDataId);
 }

+ 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);
+
 }

+ 2 - 2
blade-service/blade-archive/src/main/java/org/springblade/archive/utils/FileTransJavaDemo.java

@@ -155,7 +155,7 @@ public class FileTransJavaDemo {
         return result;
     }
 
-    public static void main(String args[]) throws Exception {
+    /*public static void main(String args[]) throws Exception {
 
         final String accessKeyId = "LTAI5tMwtPCL85iXbUtjLTxD";
         final String accessKeySecret = "WiUW5ag7HhQZPNoMAoQSC5LuxD2kLw";
@@ -180,5 +180,5 @@ public class FileTransJavaDemo {
         } else {
             System.out.println("录音文件识别结果查询失败!");
         }
-    }
+    }*/
 }

+ 23 - 1
blade-service/blade-business/src/main/java/org/springblade/business/controller/InformationWriteQueryController.java

@@ -2548,6 +2548,12 @@ public class InformationWriteQueryController extends BladeController {
     public R<Boolean> removeContractTreeNode(@RequestParam String ids) {
         //根据传入的节点,将其所有子节点删除
         WbsTreeContract removeNode = this.wbsTreeContractClient.getContractWbsTreeByPrimaryKeyId(Long.parseLong(ids));
+
+        //判断是否存在原始节点
+        if (ObjectUtil.isEmpty(removeNode.getOldId())) {
+            return R.data(300, false, "节点【" + removeNode.getFullName() + "】为原始节点,不允许删除");
+        }
+
         //查询当前操作的节点的父级关系
         StringBuilder parentNodeName = new StringBuilder();
         this.currentNodeAllParent(parentNodeName, removeNode);
@@ -2560,6 +2566,7 @@ public class InformationWriteQueryController extends BladeController {
 
         //查询所有子节点
         List<WbsTreeContract> removeNodeList = jdbcTemplate.query("select p_key_id,type from m_wbs_tree_contract where is_deleted = 0 and contract_id = " + removeNode.getContractId() + " and ancestors like '%" + removeNode.getId() + "%'", new BeanPropertyRowMapper<>(WbsTreeContract.class));
+
         //获取pKeyId
         List<Long> removeList = removeNodeList.stream().map(WbsTreeContract::getPKeyId).distinct().collect(Collectors.toList());
         //拼接
@@ -2737,9 +2744,24 @@ public class InformationWriteQueryController extends BladeController {
                 }
 
                 //设置父级id
+                boolean var = true;
                 if ("1".equals(vo.getSaveType())) {
                     //当前节点及其子节点操作
-                    newData.setParentId(OldIdToNewIdMap.containsKey(half.getParentId()) ? OldIdToNewIdMap.get(half.getParentId()) : treeContract.getId().equals(half.getParentId()) /*|| treeContract.getOldId().equals(half.getParentId().toString())*/ ? treeContract.getId() : SnowFlakeUtil.getId());
+                    if (OldIdToNewIdMap.containsKey(half.getParentId())) {
+                        //跨节点
+                        WbsTreeContract wbsTreeContract = nodeMap.get(half.getParentId() + "");
+                        if (treeContract.getNodeType().equals(wbsTreeContract.getNodeType()) && treeContract.getNodeName().equals(wbsTreeContract.getNodeName())) {
+                            newData.setParentId(treeContract.getId());
+                            var = false;
+                        }
+                    }
+                    if (var) {
+                        //同节点
+                        newData.setParentId(OldIdToNewIdMap.containsKey(half.getParentId()) ? OldIdToNewIdMap.get(half.getParentId())
+                                : treeContract.getId().equals(half.getParentId()) || treeContract.getOldId().equals(half.getParentId().toString()) ? treeContract.getId()
+                                : SnowFlakeUtil.getId());
+                    }
+
                 } else {
                     //TODO 仅当前节点新增操作时,父级id=选择新增的节点父级id(同级情况) or 父级id=选择新增的节点id(不同级情况,也就是下级)
                     if (new Integer("1").equals(half.getType())) {

+ 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 formDataId) {
+        iTaskService.addOrUpdateArchiveFileBusinessData(nodeId,keyId,contractId,formDataId);
+    }
+
 }

+ 1 - 0
blade-service/blade-business/src/main/java/org/springblade/business/mapper/InformationQueryMapper.xml

@@ -36,6 +36,7 @@
         <result column="sort" property="sort"/>
         <result column="pdf_trial_url" property="pdfTrialUrl"/>
         <result column="pdf_trial_url_position" property="pdfTrialUrlPosition"/>
+        <result column="business_time" property="BusinessTime"/>
     </resultMap>
 
     <resultMap id="queryProcessDataMap" type="org.springblade.business.vo.QueryProcessDataVO">

+ 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);
 }

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

@@ -976,5 +976,45 @@ 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 formDataId) {
+
+        InformationQuery query = this.informationQueryService.getById(formDataId);
+        if (query == null) {
+            return;
+        }
+
+        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(query.getEVisaPdfUrl());
+            archiveFile.setPdfFileUrl(query.getEVisaPdfUrl()); // 这里将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(已完成)
+            //TODO 文件题名规则,待补充
+            fillFileNameAndTime(archiveFile,query);
+            //
+            archiveFile.setEVisaFile(query.getEVisaPdfUrl());
+            archiveFile.setPdfFileUrl(query.getEVisaPdfUrl());
+            this.archiveFileService.save(archiveFile);
+        }
+    }
+
+    public  void fillFileNameAndTime(ArchiveFile archiveFile,InformationQuery info) {
+        archiveFile.setFileName(info.getName());
+        archiveFile.setFileTime(info.getBusinessTime());
+
+        //todo 文件时间怎么取
+        //archiveFile.setFileTime(info.getCreateTime());
+    }
 
 }

+ 4 - 4
blade-service/blade-control/src/main/java/org/springblade/control/controller/ExMaTwoController.java

@@ -92,9 +92,9 @@ public class ExMaTwoController extends BladeController {
     @ApiOperationSupport(order = 3)
     @ApiOperation(value = "获取我的借款列表")
     public R<List<ExMaByLoanVO>> getLoanList() {
-        if (ObjectUtil.isEmpty(SecureUtil.getUser())) {
+        /*if (ObjectUtil.isEmpty(SecureUtil.getUser())) {
             throw new ServiceException("未获取到当前用户信息,请联系管理员");
-        }
+        }*/
         LambdaQueryWrapper<EMLoanInfo> queryWrapper = new LambdaQueryWrapper<>();
         queryWrapper.eq(EMLoanInfo::getIsTemp, 1); //已提交
         queryWrapper.eq(EMLoanInfo::getStatus, 2); //已审批
@@ -166,7 +166,7 @@ public class ExMaTwoController extends BladeController {
     @ApiOperationSupport(order = 6)
     @ApiOperation(value = "获取支付收款人列表")
     public R<List<String>> getPayeeUserNameList() {
-        List<EMPayInfo> query = jdbcTemplate.query("select payee_user_name from c_expense_pay_info and is_deleted = 0 and is_temp = 1", new BeanPropertyRowMapper<>(EMPayInfo.class));
+        List<EMPayInfo> query = jdbcTemplate.query("select payee_user_name from c_expense_pay_info where is_deleted = 0 and is_temp = 1", new BeanPropertyRowMapper<>(EMPayInfo.class));
         if (query.size() > 0) {
             return R.data(query.stream().map(EMPayInfo::getPayeeUserName).collect(Collectors.toList()));
         }
@@ -177,7 +177,7 @@ public class ExMaTwoController extends BladeController {
     @ApiOperationSupport(order = 6)
     @ApiOperation(value = "获取借款申请人列表")
     public R<List<String>> getLoanUserNameList() {
-        List<EMLoanInfo> query = jdbcTemplate.query("select loan_user_name from c_expense_loan_info and is_deleted = 0 and is_temp = 1", new BeanPropertyRowMapper<>(EMLoanInfo.class));
+        List<EMLoanInfo> query = jdbcTemplate.query("select loan_user_name from c_expense_loan_info where is_deleted = 0 and is_temp = 1", new BeanPropertyRowMapper<>(EMLoanInfo.class));
         if (query.size() > 0) {
             return R.data(query.stream().map(EMLoanInfo::getLoanUserName).collect(Collectors.toList()));
         }

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

@@ -393,4 +393,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
+    }
+
 }

+ 63 - 4
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;
+
 
 
 
@@ -968,7 +974,7 @@ public class ArchiveTreeContractServiceImpl extends BaseServiceImpl<ArchiveTreeC
 	}
 
 	/**
-	 * 返回关联质检资料的节点
+	 * 返回某个合同段关联质检资料的节点
 	 * @param contractId
 	 * @return
 	 */
@@ -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;
 		}
@@ -1010,7 +1017,39 @@ public class ArchiveTreeContractServiceImpl extends BaseServiceImpl<ArchiveTreeC
 	}
 
 
-	public Integer writeBusinessData(Long wbsId, Long contractId) {
+	/**
+	 *
+	 * @param keyId
+	 * @param level
+	 * @return
+	 */
+	public Long getWbsKeyIdFromLayer(Long keyId,Long level){
+		return wbsTreeContractClient.getNextPkeyIdByNodeType(keyId,level);
+	}
+
+
+
+	/**
+	 * 根据 wbsId,contractId 获取u_information_query得信息,
+	 *   根据nodeId,看是否有归属于该nodeId得文件,新增或者更新url
+	 * @param nodeId
+	 * @param wbsId
+	 * @param contractId
+	 * @return
+	 */
+	public Integer addOrUpDateArchiveFile(Long nodeId,Long wbsId, Long contractId ) {
+
+		return 0;
+
+
+	}
+
+	/**
+	 * 将电签文件写到
+	 * @param contractId
+	 * @return
+	 */
+	public Integer writeBusinessData(Long keyId, Long contractId, String formDataId) {
 		// 这里省略了具体实现,可根据业务需求编写相应的逻辑
 
 		List<ArchiveTreeContract> associatedNodes = getWbsAssociatedNodes(contractId.toString());
@@ -1019,9 +1058,19 @@ public class ArchiveTreeContractServiceImpl extends BaseServiceImpl<ArchiveTreeC
 		}
 
 		for (ArchiveTreeContract associatedNode:associatedNodes) {
+			Long attachId = associatedNode.getId();
 
+			Long level = null;
+			if (associatedNode.getDisplayHierarchy()!= null) {
+				level = Long.parseLong(associatedNode.getDisplayHierarchy());
+			}
 
+			Long levelkeyId = getWbsKeyIdFromLayer(keyId,level);
+			ArchiveTreeContract node = getWbsNodeFromWbsKeyId(contractId,keyId,attachId);
+			if (node!= null ) {
 
+				archiveFileClient.addOrUpdateArchiveFileBusinessData(node.getId(),keyId,contractId,formDataId);
+			}
 		}
 
 
@@ -1034,5 +1083,15 @@ public class ArchiveTreeContractServiceImpl extends BaseServiceImpl<ArchiveTreeC
 		}
 	}
 
+	void BusinessData(Long contractId) {
+
+		//获取该合同段完成电签的文件题名,主要是获取pkid和fileurl
+
+		//获取返回某个合同段关联质检资料的节点
+
+	}
+
+
+
 
 }