Răsfoiți Sursa

档案查询,获取外部档案柜

qianxb 2 ani în urmă
părinte
comite
af63d14411

+ 10 - 0
blade-service-api/blade-archive-api/src/main/java/org/springblade/archive/vo/ArchivesAutoVO.java

@@ -123,6 +123,16 @@ public class ArchivesAutoVO extends ArchivesAuto {
 	 */
 	private Long destroyUser;
 
+	/**
+	 * 列表类型,1案卷列表2档案柜
+	 */
+	private Integer listType;
+
+	/**
+	 * 档案柜的档案类型,1业主档案2施工档案3监理档案
+	 */
+	private Integer archiveType;
+
 	/**
 	 * 案卷合同类型,C施工、S监理、空业主
 	 */

+ 3 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/feign/ArchiveTreeContractClient.java

@@ -41,4 +41,7 @@ public interface ArchiveTreeContractClient {
 
     @PostMapping(API_PREFIX + "/getArchiveTreeContractListByIds")
     List<ArchiveTreeContract> getArchiveTreeContractListByIds(@RequestParam String ids);
+
+    @PostMapping(API_PREFIX + "/getFirstNodeByTreeCode")
+    ArchiveTreeContract getFirstNodeByTreeCode(@RequestParam Long projectId,@RequestParam Integer type);
 }

+ 9 - 3
blade-service/blade-archive/src/main/java/org/springblade/archive/controller/ArchivesAutoController.java

@@ -135,9 +135,15 @@ public class ArchivesAutoController extends BladeController {
 			@ApiImplicitParam(name = "searchType", value = "搜索类型1案卷2文件"),
 			@ApiImplicitParam(name = "nodeIds", value = "搜索树的节点id集合")
 	})
-	public R<IPage<ArchivesAutoVO>> pageByArchivesAuto(ArchivesAutoVO archivesAuto) {
-		IPage<ArchivesAutoVO> pages = archivesAutoService.pageByArchivesAuto(archivesAuto);
-		return R.data(pages);
+	public R pageByArchivesAuto(ArchivesAutoVO archivesAuto) {
+		if (archivesAuto.getListType() == 1) {
+			IPage<ArchivesAutoVO> pages = archivesAutoService.pageByArchivesAuto(archivesAuto);
+			return R.data(pages);
+		}else {
+			//档案柜
+			List<Map<String,List<Map<String,String>>>> lists =  archivesAutoService.getArchivesCabinet(archivesAuto);
+			return R.data(lists);
+		}
 	}
 
 	/**

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

@@ -125,4 +125,6 @@ public interface ArchivesAutoMapper extends BaseMapper<ArchivesAuto> {
 	List<User> getArchiveDestroyUser();
 
     String getUserRoleName(@Param("projectId") Long projectId, @Param("contractId") Long contractId, @Param("userId") Long userId);
+
+    List<ArchivesAutoVO> getArchivesCabinet(@Param("vo") ArchivesAutoVO archivesAuto);
 }

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

@@ -409,6 +409,7 @@
             </foreach>
         </if>
         GROUP BY uaa.id
+        order by uaa.tree_sort,uaa.auto_file_sort,uaa.file_number asc
     </select>
 
     <select id="pageByArchivesAuto2" resultMap="archivesAutoResultMap">
@@ -461,6 +462,54 @@
             </foreach>
         </if>
         GROUP BY uaa.id
+        order by uaa.tree_sort,uaa.auto_file_sort,uaa.file_number asc
+    </select>
+
+    <select id="getArchivesCabinet" resultMap="archivesAutoResultMap">
+        select uaa.* from
+        (SELECT id FROM m_archive_tree_contract WHERE project_id =#{vo.projectId}
+        and  ancestors like concat('%',#{vo.nodeId},'%')
+        ) 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.searchType == 1 and vo.queryValue != null and vo.queryValue != ''">
+            and uaa.name like concat('%',#{vo.queryValue},'%')
+        </if>
+        <if test="vo.searchType == 2 and vo.queryValue != null and vo.queryValue != ''">
+            and uaf.file_name like concat('%',#{vo.queryValue},'%')
+        </if>
+        <if test="vo.storageTimes != null and vo.storageTimes != ''">
+            and uaa.storage_time in
+            <foreach collection="vo.storageTimes" item="storageTime" open="(" separator="," close=")">
+                #{storageTime}
+            </foreach>
+        </if>
+        <if test="vo.secretLevels != null and vo.secretLevels != ''">
+            and uaa.secret_level in
+            <foreach collection="vo.secretLevels" item="secretLevel" open="(" separator="," close=")">
+                #{secretLevel}
+            </foreach>
+        </if>
+        <if test="vo.carrierTypes != null and vo.carrierTypes != ''">
+            and uaa.carrier_type in
+            <foreach collection="vo.carrierTypes" item="carrierType" open="(" separator="," close=")">
+                #{carrierType}
+            </foreach>
+        </if>
+        <if test="vo.years != null and vo.years != ''">
+            and
+            <foreach collection="vo.years" item="year" separator=" or" open="(" close=")">
+                #{year} BETWEEN DATE_FORMAT(uaa.start_date,'%Y') and DATE_FORMAT(uaa.end_date ,'%Y')
+            </foreach>
+        </if>
+        <if test="vo.months != null and vo.months != ''">
+            and
+            <foreach collection="vo.months" item="month" separator=" or" open="(" close=")">
+                #{month} BETWEEN DATE_FORMAT(uaa.start_date,'%c') and DATE_FORMAT(uaa.end_date ,'%c')
+            </foreach>
+        </if>
+        GROUP BY uaa.id
+        order by uaa.tree_sort,uaa.auto_file_sort,uaa.file_number asc
     </select>
 
     <select id="getAllArchiveByContractType" resultType="org.springblade.archive.vo.ArchivesAutoVO">
@@ -524,6 +573,7 @@
 
         </if>
         and uaa.is_archive = 1
+        order by uaa.tree_sort,uaa.auto_file_sort,uaa.file_number asc
     </select>
     <select id="getFilingUnitList" resultType="java.lang.String">
         SELECT unit

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

@@ -83,4 +83,6 @@ public interface IArchivesAutoService extends BaseService<ArchivesAuto> {
 	void archiveAutoMethodThread(Long projectId, Long contractId, Long nodeId);
 
 	List<User> getArchiveDestroyUser();
+
+	List<Map<String,List<Map<String,String>>>> getArchivesCabinet(ArchivesAutoVO archivesAuto);
 }

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

@@ -37,6 +37,7 @@ import org.springblade.archive.mapper.ArchivesAutoMapper;
 import org.springblade.archive.service.IArchivesAutoService;
 import org.springblade.business.entity.ArchiveFile;
 import org.springblade.business.feign.ArchiveFileClient;
+import org.springblade.common.utils.CommonUtil;
 import org.springblade.common.utils.SnowFlakeUtil;
 import org.springblade.core.mp.base.BaseServiceImpl;
 import org.springblade.core.mp.support.Condition;
@@ -155,6 +156,52 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
 		return page.setRecords(archivesAutos);
 	}
 
+	/**
+	 * 根据搜索获取档案柜
+	 * @param archivesAuto
+	 * @return
+	 */
+	@Override
+	public List<Map<String,List<Map<String,String>>>> getArchivesCabinet(ArchivesAutoVO archivesAuto) {
+		//获取单位首节点
+		ArchiveTreeContract	contract = archiveTreeContractClient.getFirstNodeByTreeCode(archivesAuto.getProjectId(),archivesAuto.getArchiveType());
+		archivesAuto.setNodeId(contract.getId());
+		//根据单位查询所有档案
+		List<ArchivesAutoVO> archivesAutos = baseMapper.getArchivesCabinet(archivesAuto);
+		if (archivesAutos != null && archivesAutos.size() > 0) {
+			List<List<ArchivesAutoVO>> listList = CommonUtil.splitList(archivesAutos, 160);
+			//所有页,所有柜子
+			List<Map<String, List<Map<String, String>>>> allPageCabinet = new ArrayList<>();
+			//所有的柜子
+			List<Map<String,String>> allCabinet = new ArrayList<>();
+			int CabinetTotal = 1;
+			//把所有档案分成柜子
+			for (List<ArchivesAutoVO> list : listList) {
+				//一个柜子
+				Map<String, String> map = new HashMap<>();
+				map.put("id",CabinetTotal+"");
+				map.put("name",CabinetTotal+"");
+				String[] min = list.get(0).getFileNumber().split("-");
+				String[] max = list.get(list.size()-1).getFileNumber().split("-");
+				map.put("content",min[min.length-1]+"~"+max[max.length-1]);
+				//把每一个柜子都添加
+				allCabinet.add(map);
+			}
+			//把所有柜子按页分隔,每页4个
+			List<List<Map<String, String>>> lists = CommonUtil.splitList(allCabinet, 4);
+			//区分页数
+			for (List<Map<String, String>> list : lists) {
+				Map<String,List<Map<String,String>>> listMap = new HashMap<>();
+				listMap.put("children",list);
+				allPageCabinet.add(listMap);
+			}
+			return allPageCabinet;
+
+		}else {
+			return null;
+		}
+	}
+
 	@Override
 	public IPage<ArchivesAutoVO> selectArchivesAutoFilePage(ArchivesAutoVO vo) {
 		Query query = new Query();
@@ -1684,4 +1731,5 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
 		return autoMapper.getArchiveDestroyUser();
 	}
 
+
 }

+ 14 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/feign/ArchiveTreeContractImpl.java

@@ -2,6 +2,7 @@ package org.springblade.manager.feign;
 
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import lombok.AllArgsConstructor;
+import org.springblade.archive.vo.ArchivesAutoVO;
 import org.springblade.manager.entity.ArchiveTreeContract;
 import org.springblade.manager.mapper.ArchiveTreeContractMapper;
 import org.springblade.manager.service.IArchiveTreeContractService;
@@ -82,5 +83,18 @@ public class ArchiveTreeContractImpl implements ArchiveTreeContractClient {
         return archiveTreeContractService.getArchiveTreeContractListByIds(ids);
     }
 
+    @Override
+    public ArchiveTreeContract getFirstNodeByTreeCode(Long projectId,Integer type) {
+        ArchiveTreeContract contract = new ArchiveTreeContract();
+        if (type == 1){
+            contract = archiveTreeContractMapper.getFirstNodeByTreeCode(projectId);
+        }else if (type == 2){
+            contract = archiveTreeContractMapper.getFirstNodeByTreeCode2(projectId,"C");
+        }else {
+            contract = archiveTreeContractMapper.getFirstNodeByTreeCode2(projectId,"S");
+        }
+        return contract;
+    }
+
 
 }

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

@@ -92,4 +92,8 @@ public interface ArchiveTreeContractMapper extends BaseMapper<ArchiveTreeContrac
     String getUserRoleName(@Param("projectId") Long projectId, @Param("contractId") Long contractId, @Param("userId") Long userId);
 
     ArchiveTreeContract getArchiveTreeContractByNodeName(@Param("nodeName") String nodeName);
+
+    ArchiveTreeContract getFirstNodeByTreeCode(@Param("projectId") Long projectId);
+
+    ArchiveTreeContract getFirstNodeByTreeCode2(@Param("projectId") Long projectId,@Param("type") String type);
 }

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

@@ -438,4 +438,14 @@
         FROM  m_archive_tree_contract
         WHERE node_name = #{nodeName} and is_deleted = 0
     </select>
+    <select id="getFirstNodeByTreeCode" resultType="org.springblade.manager.entity.ArchiveTreeContract">
+        select * from m_archive_tree_contract
+        WHERE parent_id = (select id from m_archive_tree_contract WHERE parent_id = 0 and project_id = #{projectId})
+          and tree_code is NULL
+    </select>
+    <select id="getFirstNodeByTreeCode2" resultType="org.springblade.manager.entity.ArchiveTreeContract">
+        select * from m_archive_tree_contract
+        WHERE parent_id = (select id from m_archive_tree_contract WHERE parent_id = 0 and project_id = #{projectId})
+          and tree_code = #{type}
+    </select>
 </mapper>