Przeglądaj źródła

客户端归档树权限控制

huangjn 3 lat temu
rodzic
commit
5e7305eb27

+ 49 - 6
blade-service/blade-business/src/main/java/org/springblade/business/controller/ArchiveFileController.java

@@ -21,8 +21,12 @@ import org.springblade.business.vo.TaskVO;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.Func;
 import org.springblade.evisa.feign.EVisaClient;
+import org.springblade.manager.entity.ContractInfo;
 import org.springblade.manager.feign.ArchiveTreeClient;
+import org.springblade.manager.feign.ContractClient;
 import org.springblade.manager.vo.ArchiveTreeVO;
+import org.springblade.system.entity.Role;
+import org.springblade.system.feign.ISysClient;
 import org.springframework.beans.BeanUtils;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.bind.annotation.RequestParam;
@@ -33,10 +37,7 @@ import org.springblade.business.service.IArchiveFileService;
 import org.springblade.core.boot.ctrl.BladeController;
 
 import javax.servlet.http.HttpServletResponse;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Date;
-import java.util.List;
+import java.util.*;
 
 /**
  *  控制器
@@ -60,6 +61,10 @@ public class ArchiveFileController extends BladeController {
 
 	private final EVisaClient eVisaClient;
 
+	private final ContractClient contractClient;
+
+	private final ISysClient sysClient;
+
 	/**
 	 * 批量认证(特殊签章 签个透明空白图片,主要目的是在验签的时候有验签信息 )
 	 */
@@ -226,8 +231,46 @@ public class ArchiveFileController extends BladeController {
 	@PostMapping("/tree")
 	@ApiOperationSupport(order = 2)
 	@ApiOperation(value = "获取归档划分树")
-	public R<List<ArchiveTreeVO>> tree(){
-		return this.archiveTreeClient.tree(1,2);
+	public R<List<ArchiveTreeVO>> tree(@RequestParam String contractId){
+		//查询合同段信息
+		ContractInfo contractInfo = this.contractClient.getContractById(Long.parseLong(contractId));
+		String roleName;
+		switch (contractInfo.getContractType()){
+			case 2:
+				roleName = "监理";
+				break;
+			case 3:
+				roleName = "业主";
+				break;
+			default:
+				roleName = "施工";
+				break;
+		}
+		//获取归档树
+		List<ArchiveTreeVO> result = this.archiveTreeClient.tree(1,2).getData();
+
+		String finalRoleName = roleName;
+		result.forEach(archiveTreeVO -> {
+			if("0".equals(archiveTreeVO.getParentId().toString())){
+				//根节点,获取子级判断合同段权限
+				if(archiveTreeVO.getChildren() != null && archiveTreeVO.getChildren().size() > 0){
+					Iterator<ArchiveTreeVO> iterator = archiveTreeVO.getChildren().iterator();
+					while (iterator.hasNext()){
+						ArchiveTreeVO next = iterator.next();
+						if(StringUtils.isNotEmpty(next.getPostType())){
+							Role role = this.sysClient.getRole(Long.parseLong(next.getPostType())).getData();
+							if(role != null){
+								if(!role.getRoleName().contains(finalRoleName)){
+									iterator.remove();
+								}
+							}
+						}
+					}
+				}
+			}
+		});
+
+		return R.data(result);
 	}
 
 	/**

+ 22 - 5
blade-service/blade-business/src/main/java/org/springblade/business/controller/InformationWriteQueryController.java

@@ -468,11 +468,12 @@ public class InformationWriteQueryController extends BladeController {
 				}
 				if(queryDataResult != null && queryDataResult.size() > 0){
 					//设置颜色
-					this.setNodeColor(vos, queryDataResult);
+					this.setNodeColor(vos, queryDataResult, false);
 				}
 				//处理子节点
 				if(vos.getChildren() != null && vos.getChildren().size() > 0){
-					vos.getChildren().forEach(child -> this.setNodeColor(vos, queryDataResult));
+					//循环处理节点颜色
+					this.foreachSetNodeColor(vos.getChildren(), queryDataResult);
 				}
 
 			});
@@ -481,6 +482,20 @@ public class InformationWriteQueryController extends BladeController {
 		return R.data(result);
 	}
 
+	/**
+	 * 循环处理节点颜色
+	 */
+	private void foreachSetNodeColor(List<WbsTreeContractTreeVOS> children, List<QueryProcessDataVO> queryDataResult){
+		children.forEach(vos -> {
+			this.setNodeColor(vos, queryDataResult, false);
+			if(vos.getChildren() != null && vos.getChildren().size() > 0){
+				//进一步处理
+				this.foreachSetNodeColor(vos.getChildren(), queryDataResult);
+			}
+		});
+
+	}
+
 	/**
 	 * 监理合同段设置关联合同段的根节点名称
 	 */
@@ -947,7 +962,7 @@ public class InformationWriteQueryController extends BladeController {
 
 				//处理颜色
 				if(queryDataResult != null && queryDataResult.size() > 0){
-					this.setNodeColor(vo, queryDataResult);
+					this.setNodeColor(vo, queryDataResult, true);
 				}
 
 				//判断当前节点是否被标记为首件
@@ -968,7 +983,7 @@ public class InformationWriteQueryController extends BladeController {
 	 * 未填报1(其下所有工序节点均未填报) < 已填报2(未上报和待审批) < 已审批4(其下所有工序节点均审批)
 	 *
 	 */
-	private void setNodeColor(WbsTreeContractTreeVOS vos, List<QueryProcessDataVO> queryDataResult){
+	private void setNodeColor(WbsTreeContractTreeVOS vos, List<QueryProcessDataVO> queryDataResult, boolean isRemove){
 		if(queryDataResult != null && queryDataResult.size() > 0){
 			Iterator<QueryProcessDataVO> iterator =  queryDataResult.iterator();
 			//默认均未填报
@@ -998,7 +1013,9 @@ public class InformationWriteQueryController extends BladeController {
 								colorStatusValue.append("1");
 								break;
 						}
-						iterator.remove();
+						if(isRemove){
+							iterator.remove();
+						}
 					}
 				}
 			}

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

@@ -110,7 +110,8 @@
         display_hierarchy AS "displayHierarchy",
         is_storage_node AS "isStorageNode",
         is_upload_file_display_configuration_tree AS "isDisplayTree",
-        is_built_drawing AS "isBuiltDrawing"
+        is_built_drawing AS "isBuiltDrawing",
+        post_type AS postType
         FROM m_archive_tree
         WHERE is_deleted = 0
         <if test=" tenantId!=null and tenantId!='' ">