فهرست منبع

档案查询,根据角色权限和合同段搜索档案

qianxb 2 سال پیش
والد
کامیت
57f1b1785c

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

@@ -108,4 +108,6 @@ public interface ArchivesAutoMapper extends BaseMapper<ArchivesAuto> {
 	List<DictBiz> getCarrierTypeByDict();
 
 	void batchDestroyByIds(@Param("ids")List<String> ids);
+
+	String getUserRoleName(@Param("projectId")Long projectId,@Param("contractId") Long contractId,@Param("userId") Long userId);
 }

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

@@ -183,6 +183,9 @@
         <if test="vo.projectId != null and vo.projectId != ''">
             and matc.project_id = #{vo.projectId}
         </if>
+        <if test="vo.contractId != null and vo.contractId != ''">
+            and uaa.contract_id = #{vo.contractId}
+        </if>
         <if test="vo.searchType == 1 and vo.queryValue != null and vo.queryValue != ''">
             and uaa.name like concat('%',#{vo.queryValue},'%')
         </if>
@@ -231,6 +234,9 @@
         </foreach>
         ) matc left join u_archives_auto uaa on matc.id = uaa.node_id left join u_archive_file uaf on uaa.id = uaf.archive_id
         where uaa.is_deleted = 0
+        <if test="vo.contractId != null and vo.contractId != ''">
+            and uaa.contract_id = #{vo.contractId}
+        </if>
         <if test="vo.searchType == 1 and vo.queryValue != null and vo.queryValue != ''">
             and uaa.name like concat('%',#{vo.queryValue},'%')
         </if>
@@ -311,6 +317,14 @@
     <select id="getCarrierTypeByDict" resultType="org.springblade.system.entity.DictBiz">
         SELECT * FROM blade_dict_biz WHERE code = 'storage_type' AND  parent_id > 0 AND tenant_id = 000000
     </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>
 
 
     <update id="splitFiles" >

+ 11 - 2
blade-service/blade-archive/src/main/java/org/springblade/archive/service/impl/ArchivesAutoServiceImpl.java

@@ -124,10 +124,19 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
 			vo.setCarrierTypes(Arrays.asList(vo.getCarrierType().split(",")));
 		}
 		List<ArchivesAutoVO> archivesAutos = null;
-		if (StringUtils.isNotBlank(vo.getNodeIds())){
+		//获取合同段类型
+		ContractInfo contractInfo = contractClient.getContractById(vo.getContractId());
+		Integer contractType = contractInfo.getContractType();
+		//根据用户在当前合同段的权限,判断返回
+		BladeUser user = AuthUtil.getUser();
+		String name = baseMapper.getUserRoleName(vo.getProjectId(),vo.getContractId(),user.getUserId());
+		if (name.contains("超级管理员") || contractType == 3) {
+			vo.setContractId(null);
+		}
+		if (StringUtils.isNotBlank(vo.getNodeIds())) {
 			vo.setNodeIdArray(Arrays.asList(vo.getNodeIds().split(",")));
 			archivesAutos = baseMapper.pageByArchivesAuto2(page, vo);
-		}else {
+		} else {
 			archivesAutos = baseMapper.pageByArchivesAuto(page, vo);
 		}
 		if (archivesAutos != null && archivesAutos.size() >0) {