qianxb 2 anni fa
parent
commit
2f76e9bf1f

+ 14 - 0
blade-service/blade-archive/src/main/java/org/springblade/archive/controller/ArchivesAutoController.java

@@ -157,6 +157,20 @@ public class ArchivesAutoController extends BladeController {
 		}
 	}
 
+	/**
+	 * 档案统计-档案柜切换档案查看权限
+	 */
+	@GetMapping("/getArchivesAuthByUser")
+	@ApiOperationSupport(order = 3)
+	@ApiOperation(value = "档案统计-档案柜切换档案查看权限")
+	@ApiImplicitParams({
+			@ApiImplicitParam(name = "archiveType", value = "1业主2施工3监理", required = true),
+	})
+	public void getArchivesAuthByUser(Long projectId,Long contractId,Integer archiveType) {
+		archivesAutoService.getArchivesAuthByUser(projectId,contractId,archiveType);
+
+	}
+
 	/**
 	 * 档案统计-已组案卷
 	 */

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

@@ -375,7 +375,8 @@
         where project_id = #{projectId};
     </select>
     <select id="pageByArchivesAuto" resultMap="archivesAutoResultMap">
-        select uaa.* from m_archive_tree_contract matc left join u_archives_auto uaa on matc.id = uaa.node_id left join
+        select uaa.*,(select COUNT(1) from u_archive_file af WHERE af.archive_id = uaa.id AND af.is_element = 0 and af.is_deleted = 0) as pageNumber
+        from m_archive_tree_contract 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 and uaa.is_archive = 1
         <if test="vo.projectId != null and vo.projectId != ''">
@@ -425,7 +426,7 @@
     </select>
 
     <select id="pageByArchivesAuto2" resultMap="archivesAutoResultMap">
-        select uaa.* from
+        select uaa.*,(select COUNT(1) from u_archive_file af WHERE af.archive_id = uaa.id AND af.is_element = 0 and af.is_deleted = 0) as pageNumber from
         (SELECT id FROM m_archive_tree_contract WHERE project_id =#{vo.projectId}
         and 1=2
         <foreach collection="vo.nodeIdArray" item="nodeId">
@@ -485,6 +486,9 @@
         ) 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 and uaa.is_archive = 1
+        <if test="vo.contractId != null and vo.contractId != ''">
+            and uaa.contract_id = #{vo.contractId}
+        </if>
         GROUP BY uaa.id
         order by uaa.tree_sort,uaa.auto_file_sort,uaa.file_number asc
     </select>
@@ -496,6 +500,9 @@
         ) 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 and uaa.is_archive = 1
+        <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>
@@ -543,6 +550,9 @@
         ) 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 and uaa.is_archive = 1
+        <if test="vo.contractId != null and vo.contractId != ''">
+            and uaa.contract_id = #{vo.contractId}
+        </if>
         GROUP BY uaa.id
         order by uaa.tree_sort,uaa.auto_file_sort,uaa.file_number asc
 --         order by uaa.id
@@ -555,6 +565,9 @@
         ) 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 and uaa.is_archive = 1
+        <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>

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

@@ -88,4 +88,6 @@ public interface IArchivesAutoService extends BaseService<ArchivesAuto> {
 	List<Map<String,List<Map<String,String>>>> getArchivesCabinet(ArchivesAutoVO archivesAuto);
 
 	R pageByArchivesAuto2(ArchivesAutoVO archivesAuto);
+
+    void getArchivesAuthByUser(Long projectId,Long contractId,Integer archiveType);
 }

+ 33 - 0
blade-service/blade-archive/src/main/java/org/springblade/archive/service/impl/ArchivesAutoServiceImpl.java

@@ -183,6 +183,15 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
 		//获取单位首节点
 		ArchiveTreeContract	contract = archiveTreeContractClient.getFirstNodeByTreeCode(vo.getProjectId(),vo.getArchiveType());
 		vo.setNodeId(contract.getId());
+		//获取合同段类型
+		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);
+		}
 		//根据单位查询出当前箱子所有档案,最大为160条
 		List<ArchivesAutoVO> archivesAutos = baseMapper.pageByArchivesAuto3(page, vo);
 		//根据条件筛选
@@ -241,6 +250,21 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
 		}
 	}
 
+	@Override
+	public void getArchivesAuthByUser(Long projectId,Long contractId,Integer archiveType) {
+		//获取合同段类型
+		ContractInfo contractInfo = contractClient.getContractById(contractId);
+		Integer contractType = contractInfo.getContractType();
+		//根据用户在当前合同段的权限,判断返回
+		BladeUser user = AuthUtil.getUser();
+		String name = baseMapper.getUserRoleName(projectId,contractId,user.getUserId());
+		if (!name.contains("超级管理员") || !(contractType == 3)) {
+			if (contractType != archiveType){
+				throw new ServiceException("无权限查看");
+			}
+		}
+	}
+
 	/**
 	 * 根据搜索获取档案柜
 	 * @param archivesAuto
@@ -253,6 +277,15 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
 		if (contract == null){
 			throw new ServiceException("归档树节点错误");
 		}
+		//获取合同段类型
+		ContractInfo contractInfo = contractClient.getContractById(archivesAuto.getContractId());
+		Integer contractType = contractInfo.getContractType();
+		//根据用户在当前合同段的权限,判断返回
+		BladeUser user = AuthUtil.getUser();
+		String name = baseMapper.getUserRoleName(archivesAuto.getProjectId(),archivesAuto.getContractId(),user.getUserId());
+		if (name.contains("超级管理员") || contractType == 3) {
+			archivesAuto.setContractId(null);
+		}
 		//如果没有获取到对应单位,则提示
 		archivesAuto.setNodeId(contract.getId());
 		//根据单位查询所有档案