Эх сурвалжийг харах

档案查询,根据角色权限获取不同的目录

qianxb 2 жил өмнө
parent
commit
43af861a54

+ 2 - 2
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/ArchiveTreeContractController.java

@@ -343,8 +343,8 @@ public class ArchiveTreeContractController extends BladeController {
 	 */
 	@GetMapping("getArchiveTreeByNodeType")
 	@ApiOperation(value = "根据节点类型获取档案,档案查询选择目录", notes = "传入项目id,节点类型")
-	public R getArchiveTreeByNodeType(Long projectId,Long nodeType){
-		return R.data(archiveTreeContractService.getArchiveTreeByNodeType(projectId,nodeType));
+	public R getArchiveTreeByNodeType(Long projectId,Long contractId,Integer nodeType){
+		return R.data(archiveTreeContractService.getArchiveTreeByNodeType(projectId,contractId,nodeType));
 	}
 	/**
 	 * 根据父节点获取子节点集合

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

@@ -86,4 +86,6 @@ public interface ArchiveTreeContractMapper extends BaseMapper<ArchiveTreeContrac
 	List<ArchiveTreeContractVO3> getChildrenNodeByNodeId(@Param("nodeId") Long nodeId);
 
 	List<ArchiveTreeContract> getAuthCodeList(@Param("id") String id,@Param("authCode") String authCode,@Param("contractId") Long contractId);
+
+    String getUserRoleName(@Param("projectId")Long projectId,@Param("contractId") Long contractId,@Param("userId") Long userId);
 }

+ 8 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/ArchiveTreeContractMapper.xml

@@ -408,4 +408,12 @@
         </if>
         ORDER BY d.sort
     </select>
+    <select id="getUserRoleName" resultType="java.lang.String">
+        SELECT br.role_name
+        FROM blade_role br
+        WHERE br.id = (
+            SELECT role_id  FROM m_project_assignment_user
+            WHERE project_id = #{projectId} AND contract_id = #{contractId} AND user_id = #{userId}
+        )
+    </select>
 </mapper>

+ 1 - 1
blade-service/blade-manager/src/main/java/org/springblade/manager/service/IArchiveTreeContractService.java

@@ -96,7 +96,7 @@ public interface IArchiveTreeContractService extends BaseService<ArchiveTreeCont
 
 	List<Map<String,Object>> getArchiveTreeAndArchiveCount(Long projectId,Long nodeId);
 
-    List<ArchiveTreeContractVO3> getArchiveTreeByNodeType(Long projectId, Long nodeType);
+    List<ArchiveTreeContractVO3> getArchiveTreeByNodeType(Long projectId, Long contractId,Integer nodeType);
 
 	List<ArchiveTreeContractVO3> getChildrenNodeByNodeId(Long nodeId);
 	String getAuthCode(Long contractId);

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

@@ -865,15 +865,33 @@ public class ArchiveTreeContractServiceImpl extends BaseServiceImpl<ArchiveTreeC
 	}
 
 	@Override
-	public List<ArchiveTreeContractVO3> getArchiveTreeByNodeType(Long projectId, Long nodeType) {
-		if (nodeType == 1){
-			return baseMapper.getArchiveTreeByNodeType2(projectId);
-		}else if (nodeType == 2){
-			return baseMapper.getArchiveTreeByNodeType(projectId,"C");
-		}else if (nodeType == 3){
-			return baseMapper.getArchiveTreeByNodeType(projectId,"S");
+	public List<ArchiveTreeContractVO3> getArchiveTreeByNodeType(Long projectId, Long contractId,Integer nodeType) {
+		//获取合同段类型
+		ContractInfo contractInfo = contractInfoService.selectById(contractId + "");
+		Integer contractType = contractInfo.getContractType();
+		//根据用户在当前合同段的权限,判断返回
+		BladeUser user = AuthUtil.getUser();
+		String name = baseMapper.getUserRoleName(projectId,contractId,user.getUserId());
+		if (name.contains("超级管理员") || contractType == 3) {
+			//
+			if (nodeType == 1) {
+				return baseMapper.getArchiveTreeByNodeType2(projectId);
+			} else if (nodeType == 2) {
+				return baseMapper.getArchiveTreeByNodeType(projectId, "C");
+			} else if (nodeType == 3) {
+				return baseMapper.getArchiveTreeByNodeType(projectId, "S");
+			} else {
+				return null;
+			}
 		}else {
-			return null;
+			//只返回对应类型的
+			if (contractType == 1 && nodeType == 2){
+					return baseMapper.getArchiveTreeByNodeType(projectId, "C");
+			} else if (contractType == 2 && nodeType == 3) {
+					return baseMapper.getArchiveTreeByNodeType(projectId, "S");
+			}else {
+				return null;
+			}
 		}
 	}