Sfoglia il codice sorgente

Merge remote-tracking branch 'origin/master'

liuyc 2 anni fa
parent
commit
2f6da0e339

+ 2 - 2
blade-service/blade-archive/src/main/java/org/springblade/archive/controller/ArchiveFileController.java

@@ -289,8 +289,8 @@ public class ArchiveFileController extends BladeController {
         //统计案卷文件大小
         Long fileSize = archiveFileClient.getAllArchiveFileSize(projectId);
         //统计表单数据大小
-        Long tableSize = wbsTreeContractClient.getAllTableFileSize(projectId);
-        String size = org.springblade.common.utils.FileUtils.formatSize(fileSize + tableSize);
+//        Long tableSize = wbsTreeContractClient.getAllTableFileSize(projectId);
+        String size = org.springblade.common.utils.FileUtils.formatSize(fileSize );
         return R.data(size);
     }
 }

+ 2 - 2
blade-service/blade-archive/src/main/java/org/springblade/archive/controller/ArchiveOfflineVersionInfoController.java

@@ -38,7 +38,7 @@ public class ArchiveOfflineVersionInfoController {
     @GetMapping("/packData")
     public R<String> packData(Long projectId) throws Exception {
         //异步调用自动打包上传,完成后修改数据库信息
-        offlineVersionInfoService.packData(1578599210897772545L);
+        offlineVersionInfoService.packData(projectId);
         return R.data("最新数据后台自动打包中,打包完成后会更新打包日期");
     }
     /**
@@ -47,7 +47,7 @@ public class ArchiveOfflineVersionInfoController {
     @ApiOperation(value = "脱机载体工具")
     @GetMapping("/getVersionInfo")
     public R<ArchiveOfflineVersionInfo> getVersionInfo(Long projectId){
-        ArchiveOfflineVersionInfo versionInfo = mapper.selectVersionInfo(1578599210897772545L);
+        ArchiveOfflineVersionInfo versionInfo = mapper.selectVersionInfo(projectId);
         String size = this.formatSize(Long.parseLong(versionInfo.getFileSize()));
         versionInfo.setFileSize(size);
         return R.data(versionInfo);

+ 147 - 141
blade-service/blade-archive/src/main/java/org/springblade/archive/service/impl/ArchiveOfflineVersionInfoServiceImpl.java

@@ -81,168 +81,174 @@ public class ArchiveOfflineVersionInfoServiceImpl extends BaseServiceImpl<Archiv
     }
     public void fileToSqlite(Long projectId) throws Exception {
         List<ArchiveFile> list = fileClient.getListByProjectId(projectId);
-        String localUrl = "/www/wwwroot/localClient/local_archives/alilib/";
-        for (ArchiveFile file : list) {
-            if (StringUtil.isNotBlank(file.getFileUrl())) {
-                String fileUrl = file.getFileUrl();
-                String fileName = fileUrl.substring(fileUrl.lastIndexOf('/') + 1);
-                InputStream file_out = CommonUtil.getOSSInputStream(fileUrl);
-                CommonUtil.inputStreamToFile(file_out,new File(localUrl+fileName));
-                file.setFileUrl(fileName);
-            }
-            if (StringUtil.isNotBlank(file.getPdfFileUrl())){
-                String pdfFileUrl = file.getPdfFileUrl();
-                String fileName = pdfFileUrl.substring(pdfFileUrl.lastIndexOf('/') + 1);
-                InputStream file_out = CommonUtil.getOSSInputStream(pdfFileUrl);
-                CommonUtil.inputStreamToFile(file_out,new File(localUrl+fileName));
-                file.setPdfFileUrl(fileName);
-            }
-        }
-        try  {
-            Connection conn = data.dataSource().getConnection();
-            //清空原有数据
-            Statement statement = conn.createStatement();
-            statement.execute("DELETE FROM u_archive_file");
-            statement.close();
-            //导入最新数据
-            String sql = "INSERT INTO u_archive_file (id, project_id, node_id, file_number, file_name, file_time, file_url, pdf_file_url, status, is_deleted, archive_id,create_time)" +
-                    " VALUES(?,?,?,?,?,?,?,?,?,?,?,?)";
-            PreparedStatement pstm = conn.prepareStatement(sql);
-            //pstm 绑定数据
-            int i=0;
+        if (list != null && list.size() > 0) {
+            String localUrl = "/www/wwwroot/localClient/local_archives/alilib/";
             for (ArchiveFile file : list) {
-                i++;
-                pstm.setLong(1,file.getId());
-                pstm.setLong(2, Long.parseLong(file.getProjectId()));
-                pstm.setString(3,file.getNodeId()==null?"":file.getNodeId());
-                pstm.setString(4,file.getFileNumber()==null?"":file.getFileNumber());
-                pstm.setString(5,file.getFileName());
-                pstm.setString(6,file.getFileTime());
-                pstm.setString(7,file.getFileUrl()==null?"":file.getFileUrl());
-                pstm.setString(8,file.getPdfFileUrl()==null?"":file.getPdfFileUrl());
-                pstm.setInt(9,file.getStatus());
-                pstm.setInt(10,file.getIsDeleted());
-                pstm.setLong(11,file.getArchiveId()==null?-1:file.getArchiveId());
-                pstm.setString(12,new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(file.getCreateTime()));
-                //添加批处理
-                pstm.addBatch();
-                if (i % 1000 == 0) {
-                    pstm.executeBatch();
-                    pstm.clearBatch();
+                if (StringUtil.isNotBlank(file.getFileUrl())) {
+                    String fileUrl = file.getFileUrl();
+                    String fileName = fileUrl.substring(fileUrl.lastIndexOf('/') + 1);
+                    InputStream file_out = CommonUtil.getOSSInputStream(fileUrl);
+                    CommonUtil.inputStreamToFile(file_out, new File(localUrl + fileName));
+                    file.setFileUrl(fileName);
+                }
+                if (StringUtil.isNotBlank(file.getPdfFileUrl())) {
+                    String pdfFileUrl = file.getPdfFileUrl();
+                    String fileName = pdfFileUrl.substring(pdfFileUrl.lastIndexOf('/') + 1);
+                    InputStream file_out = CommonUtil.getOSSInputStream(pdfFileUrl);
+                    CommonUtil.inputStreamToFile(file_out, new File(localUrl + fileName));
+                    file.setPdfFileUrl(fileName);
+                }
+            }
+            try {
+                Connection conn = data.dataSource().getConnection();
+                //清空原有数据
+                Statement statement = conn.createStatement();
+                statement.execute("DELETE FROM u_archive_file");
+                statement.close();
+                //导入最新数据
+                String sql = "INSERT INTO u_archive_file (id, project_id, node_id, file_number, file_name, file_time, file_url, pdf_file_url, status, is_deleted, archive_id,create_time)" +
+                        " VALUES(?,?,?,?,?,?,?,?,?,?,?,?)";
+                PreparedStatement pstm = conn.prepareStatement(sql);
+                //pstm 绑定数据
+                int i = 0;
+                for (ArchiveFile file : list) {
+                    i++;
+                    pstm.setLong(1, file.getId());
+                    pstm.setLong(2, Long.parseLong(file.getProjectId()));
+                    pstm.setString(3, file.getNodeId() == null ? "" : file.getNodeId());
+                    pstm.setString(4, file.getFileNumber() == null ? "" : file.getFileNumber());
+                    pstm.setString(5, file.getFileName());
+                    pstm.setString(6, file.getFileTime());
+                    pstm.setString(7, file.getFileUrl() == null ? "" : file.getFileUrl());
+                    pstm.setString(8, file.getPdfFileUrl() == null ? "" : file.getPdfFileUrl());
+                    pstm.setInt(9, file.getStatus());
+                    pstm.setInt(10, file.getIsDeleted());
+                    pstm.setLong(11, file.getArchiveId() == null ? -1 : file.getArchiveId());
+                    pstm.setString(12, new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(file.getCreateTime()));
+                    //添加批处理
+                    pstm.addBatch();
+                    if (i % 1000 == 0) {
+                        pstm.executeBatch();
+                        pstm.clearBatch();
+                    }
                 }
+                //将批处理余下的语句执行完毕
+                pstm.executeBatch();
+                //释放资源
+                pstm.close();
+                conn.close();
+            } catch (Exception e) {
+                e.printStackTrace();
             }
-            //将批处理余下的语句执行完毕
-            pstm.executeBatch();
-            //释放资源
-            pstm.close();
-            conn.close();
-        }catch (Exception e){
-            e.printStackTrace();
         }
     }
 
     public void contractToSqlite(Long projectId){
         List<ArchiveTreeContract> list = contractClient.getListByProjectId(projectId);
-        try  {
-            Connection conn = data.dataSource().getConnection();
-            Statement statement = conn.createStatement();
-            statement.execute("DELETE FROM m_archive_tree_contract");
-            statement.close();
-            //获取执行对象
-            String sql = "INSERT INTO m_archive_tree_contract(id, project_id, parent_id, ancestors, node_name,status,is_deleted,create_time)" +
-                    "VALUES(?, ?, ?, ?, ?,?,?,?)";
-            PreparedStatement pstm = conn.prepareStatement(sql);
-            //pstm 绑定数据
-            int i=0;
-            for (ArchiveTreeContract contract : list) {
-                i++;
-                pstm.setLong(1,contract.getId());
-                pstm.setLong(2,contract.getProjectId());
-                pstm.setLong(3,contract.getParentId());
-                pstm.setString(4,contract.getAncestors());
-                pstm.setString(5,contract.getNodeName());
-                pstm.setInt(6,contract.getStatus());
-                pstm.setInt(7,contract.getIsDeleted());
-                pstm.setString(8,  new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(contract.getCreateTime()));
-                //添加批处理
-                pstm.addBatch();
-                if (i % 1000 == 0) {
-                    pstm.executeBatch();
-                    pstm.clearBatch();
+        if (list != null && list.size() > 0) {
+            try {
+                Connection conn = data.dataSource().getConnection();
+                Statement statement = conn.createStatement();
+                statement.execute("DELETE FROM m_archive_tree_contract");
+                statement.close();
+                //获取执行对象
+                String sql = "INSERT INTO m_archive_tree_contract(id, project_id, parent_id, ancestors, node_name,status,is_deleted,create_time)" +
+                        "VALUES(?, ?, ?, ?, ?,?,?,?)";
+                PreparedStatement pstm = conn.prepareStatement(sql);
+                //pstm 绑定数据
+                int i = 0;
+                for (ArchiveTreeContract contract : list) {
+                    i++;
+                    pstm.setLong(1, contract.getId());
+                    pstm.setLong(2, contract.getProjectId());
+                    pstm.setLong(3, contract.getParentId());
+                    pstm.setString(4, contract.getAncestors());
+                    pstm.setString(5, contract.getNodeName());
+                    pstm.setInt(6, contract.getStatus());
+                    pstm.setInt(7, contract.getIsDeleted());
+                    pstm.setString(8, new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(contract.getCreateTime()));
+                    //添加批处理
+                    pstm.addBatch();
+                    if (i % 1000 == 0) {
+                        pstm.executeBatch();
+                        pstm.clearBatch();
+                    }
                 }
+                //将批处理余下的语句执行完毕
+                pstm.executeBatch();
+                //释放资源
+                pstm.close();
+                conn.close();
+            } catch (Exception e) {
+                e.printStackTrace();
             }
-            //将批处理余下的语句执行完毕
-            pstm.executeBatch();
-            //释放资源
-            pstm.close();
-            conn.close();
-        }catch (Exception e){
-            e.printStackTrace();
         }
     }
 
     public void autoToSqlite(Long projectId){
         List<ArchivesAutoDTO> list = autoMapper.getListByProjectId(projectId);
-        String localUrl = "/www/wwwroot/localClient/local_archives/alilib/";
-        //拼接档案里文件的pdf设置allPdf
-        for (ArchivesAutoDTO dto : list) {
-            List<ArchiveFile> files = fileClient.getArchiveFileByArchivesId(dto.getId()+"","");
-            if (files != null && files.size() >0){
-                List<String> urlList = new ArrayList<>();
-                for (ArchiveFile file : files) {
-                    if (StringUtil.isNotBlank(file.getPdfFileUrl())){
-                        urlList.add(file.getPdfFileUrl());
+        if (list != null && list.size() > 0) {
+            String localUrl = "/www/wwwroot/localClient/local_archives/alilib/";
+            //拼接档案里文件的pdf设置allPdf
+            for (ArchivesAutoDTO dto : list) {
+                List<ArchiveFile> files = fileClient.getArchiveFileByArchivesId(dto.getId() + "", "");
+                if (files != null && files.size() > 0) {
+                    List<String> urlList = new ArrayList<>();
+                    for (ArchiveFile file : files) {
+                        if (StringUtil.isNotBlank(file.getPdfFileUrl())) {
+                            urlList.add(file.getPdfFileUrl());
+                        }
+                    }
+                    if (urlList.size() > 0) {
+                        Long id = SnowFlakeUtil.getId();
+                        FileUtils.mergePdfPublicMethods(urlList, localUrl + id + ".pdf");
+                        dto.setAllFilePdf(id + ".pdf");
                     }
                 }
-                if (urlList.size() > 0){
-                    Long id = SnowFlakeUtil.getId();
-                    FileUtils.mergePdfPublicMethods(urlList,localUrl+id+".pdf");
-                    dto.setAllFilePdf(id+".pdf");
-                }
-            }
 
-        }
-        try  {
-            Connection conn = data.dataSource().getConnection();
-            //清空数据
-            Statement statement = conn.createStatement();
-            statement.execute("DELETE FROM u_archives_auto");
-            statement.close();
-            //导入数据
-            String sql = "INSERT INTO u_archives_auto (id, project_id, name, file_number, unit,storage_time, is_archive,node_id, status, is_deleted,create_time,all_file_pdf)" +
-                    "VALUES(?,?,?,?,?,?,?,?,?,?,?,?)";
-            PreparedStatement pstm = conn.prepareStatement(sql);
-            //pstm 绑定数据
-            int i=0;
-            for (ArchivesAutoDTO auto : list) {
-                i++;
-                pstm.setLong(1,auto.getId());
-                pstm.setLong(2,auto.getProjectId());
-                pstm.setString(3,auto.getName());
-                pstm.setString(4,auto.getFileNumber());
-                pstm.setString(5,auto.getUnit());
-                pstm.setString(6,auto.getStorageTime());
-                pstm.setInt(7,auto.getIsArchive()==null?0:1);
-                pstm.setLong(8,auto.getNodeId());
-                pstm.setInt(9,auto.getStatus());
-                pstm.setInt(10,auto.getIsDeleted());
-                pstm.setString(11,  new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(auto.getCreateTime()));
-                pstm.setString(12,auto.getAllFilePdf()==null?"":auto.getAllFilePdf());
+            }
+            try {
+                Connection conn = data.dataSource().getConnection();
+                //清空数据
+                Statement statement = conn.createStatement();
+                statement.execute("DELETE FROM u_archives_auto");
+                statement.close();
+                //导入数据
+                String sql = "INSERT INTO u_archives_auto (id, project_id, name, file_number, unit,storage_time, is_archive,node_id, status, is_deleted,create_time,all_file_pdf)" +
+                        "VALUES(?,?,?,?,?,?,?,?,?,?,?,?)";
+                PreparedStatement pstm = conn.prepareStatement(sql);
+                //pstm 绑定数据
+                int i = 0;
+                for (ArchivesAutoDTO auto : list) {
+                    i++;
+                    pstm.setLong(1, auto.getId());
+                    pstm.setLong(2, auto.getProjectId());
+                    pstm.setString(3, auto.getName());
+                    pstm.setString(4, auto.getFileNumber());
+                    pstm.setString(5, auto.getUnit());
+                    pstm.setString(6, auto.getStorageTime());
+                    pstm.setInt(7, auto.getIsArchive() == null ? 0 : 1);
+                    pstm.setLong(8, auto.getNodeId());
+                    pstm.setInt(9, auto.getStatus());
+                    pstm.setInt(10, auto.getIsDeleted());
+                    pstm.setString(11, new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(auto.getCreateTime()));
+                    pstm.setString(12, auto.getAllFilePdf() == null ? "" : auto.getAllFilePdf());
 
-                //添加批处理
-                pstm.addBatch();
-                if (i % 1000 == 0) {
-                    pstm.executeBatch();
-                    pstm.clearBatch();
+                    //添加批处理
+                    pstm.addBatch();
+                    if (i % 1000 == 0) {
+                        pstm.executeBatch();
+                        pstm.clearBatch();
+                    }
                 }
+                //将批处理余下的语句执行完毕
+                pstm.executeBatch();
+                //释放资源
+                pstm.close();
+                conn.close();
+            } catch (Exception e) {
+                e.printStackTrace();
             }
-            //将批处理余下的语句执行完毕
-            pstm.executeBatch();
-            //释放资源
-            pstm.close();
-            conn.close();
-        }catch (Exception e){
-            e.printStackTrace();
         }
     }
 

+ 25 - 8
blade-service/blade-archive/src/main/java/org/springblade/archive/service/impl/ArchivesAutoServiceImpl.java

@@ -25,6 +25,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import lombok.AllArgsConstructor;
 import org.apache.commons.lang.StringUtils;
 import org.springblade.archive.entity.ArchivesAuto;
+import org.springblade.archive.service.IArchiveAutoPdfService;
 import org.springblade.archive.vo.ArchivesAutoVO;
 import org.springblade.archive.mapper.ArchivesAutoMapper;
 import org.springblade.archive.service.IArchivesAutoService;
@@ -65,6 +66,7 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
 	private ArchiveTreeContractClient archiveTreeContractClient;
 	private ContractClient contractClient;
 	private Map<String,Integer> indexMap; //按立卷位区分和生成流水号
+	private IArchiveAutoPdfService archiveAutoPdfService;
 
 
 
@@ -75,7 +77,7 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
 
 	@Override
 	public IPage<ArchivesAutoVO> pageByArchivesAuto(ArchivesAutoVO vo) {
-		IPage<ArchivesAutoVO> page = new Page<>();
+		IPage<ArchivesAutoVO> page = new Page<>(vo.getCurrent(),vo.getSize());
 		if (StringUtils.isNotBlank(vo.getStorageTime())) {
 			vo.setStorageTimes(Arrays.asList(vo.getStorageTime().split(",")));
 		}
@@ -304,7 +306,10 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
 		archivesAuto.setEndDate(LocalDateTime.parse(endDate));//文件结束时间
 		archivesAuto.setStorageTime(node.getStorageTime());//保管期限  从节点规格获取
 		archivesAuto.setSecretLevel("");//保密级别 没地方设置 暂留
-		//archivesAuto.setCarrierType();//载体类型
+		//载体类型
+		if (node.getStorageType()!= null){
+			archivesAuto.setCarrierType(node.getStorageType().toString());
+		}
 		//archivesAuto.setKeywords();//主题词
 		//archivesAuto.setStorageLocation();//存放位置
 		archivesAuto.setIsArchive(1);//已归档
@@ -344,8 +349,13 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
 		//TODO 获取案卷题名
 		return "";
 	}
-	private String builtFilePageNo(List<ArchiveFile> waitArchiveFiles){
+	private String builtFilePageNo(ArchivesAuto archivesAuto,List<ArchiveFile> waitArchiveFiles){
 		//TODO 生成文件对应的页码,返回url
+
+		archiveAutoPdfService.builtFilePageNo(archivesAuto,waitArchiveFiles);
+
+		this.updateById(archivesAuto);
+
 		return "";
 	}
 
@@ -370,7 +380,10 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
 		//2.设置文件所属案卷,组卷状态
 		Long archivesAutoId = archivesAuto.getId();
 
-		builtFilePageNo(waitArchiveFiles);//生成文件页码
+		//封面和生成文件页码
+		archiveAutoPdfService.buildArchiveFrontPdfs(archivesAuto.getProjectId(),archivesAuto,waitArchiveFiles);
+
+		builtFilePageNo(archivesAuto,waitArchiveFiles);//生成文件页码
 
 		for(ArchiveFile file:waitArchiveFiles){
 			file.setArchiveId(archivesAutoId);//设置文件所属案卷
@@ -412,7 +425,9 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
 		ArchivesAuto archivesAuto = builtArchives(node,pageN,fileN,startDate,endDate,archiveName);
 
 		//2.生成文件页码
-		builtFilePageNo(waitArchiveFiles);
+		archiveAutoPdfService.buildArchiveFrontPdfs(archivesAuto.getProjectId(),archivesAuto,waitArchiveFiles);
+
+		builtFilePageNo(archivesAuto,waitArchiveFiles);
 
 		//3.设置文件所属案卷,组卷状态
 		Long archivesAutoId = archivesAuto.getId();
@@ -450,8 +465,10 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
 		//1.创建新案卷
 		ArchivesAuto archivesAuto = builtArchives(node,pageN,fileN,startDate,endDate,archiveName);
 
-		//2.生成文件页码
-		builtFilePageNo(waitArchiveFiles);
+		//2.封面和生成文件页码
+		archiveAutoPdfService.buildArchiveFrontPdfs(archivesAuto.getProjectId(),archivesAuto,waitArchiveFiles);
+
+		builtFilePageNo(archivesAuto,waitArchiveFiles);
 
 		//3.设置文件所属案卷,组卷状态
 		Long archivesAutoId = archivesAuto.getId();
@@ -751,7 +768,7 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
 	 */
 	public List<ArchivesAuto> findArchivesAutosByIds(List<Long> ids) {
 		QueryWrapper<ArchivesAuto> queryWrapper = new QueryWrapper<>();
-		queryWrapper.in("id", ids)
+		queryWrapper.in("node_id", ids)
 				.orderByDesc("tree_sort")
 				.orderByAsc("auto_file_sort");
 

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

@@ -64,7 +64,7 @@ import static org.springblade.core.cache.constant.CacheConstant.SYS_CACHE;
 @RestController
 @AllArgsConstructor
 @RequestMapping("/archiveTreeContract")
-@Api(value = "", tags = "接口")
+@Api(value = "档案归档树", tags = "档案归档树接口")
 public class ArchiveTreeContractController extends BladeController {
 
 	private final IArchiveTreeContractService archiveTreeContractService;
@@ -295,6 +295,17 @@ public class ArchiveTreeContractController extends BladeController {
 		return R.data(archiveTreeContractService.getSameGradeNode(id));
 	}
 
+	/**
+	 * 档案统计-归档树及其档案总数
+	 */
+	@GetMapping("/getArchiveTreeAndArchiveCount")
+	@ApiOperationSupport(order = 12)
+	@ApiOperation(value = "获取归档树及其档案总数", notes = "传入节点id")
+	public R getArchiveTreeAndArchiveCount(Long projectId,Long nodeId) {
+		List<Map<String,Object>> list = archiveTreeContractService.getArchiveTreeAndArchiveCount(projectId,nodeId);
+		return R.data(list);
+	}
+
 	/**
 	 * 提交归档树手动排序
 	 */

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

@@ -17,6 +17,7 @@
 package org.springblade.manager.mapper;
 
 
+import org.apache.ibatis.annotations.MapKey;
 import org.apache.ibatis.annotations.Param;
 import org.springblade.manager.entity.ArchiveTreeContract;
 import org.springblade.manager.vo.ArchiveTreeContractVO;
@@ -26,6 +27,7 @@ import org.springblade.manager.vo.ArchiveTreeContractVO2;
 import org.springblade.manager.vo.ArchiveTreeVO;
 
 import java.util.List;
+import java.util.Map;
 
 /**
  *  Mapper 接口
@@ -72,4 +74,7 @@ public interface ArchiveTreeContractMapper extends BaseMapper<ArchiveTreeContrac
 	List<ArchiveTreeContract> getListByProjectId(@Param("projectId")Long projectId);
 
 	List<ArchiveTreeContract> getSelectNodeByGroupId(@Param("projectId") Long projectId,@Param("archiveAutoGroupId") Long archiveAutoGroupId);
+
+	@MapKey("id")
+	List<Map<String, Object>> getArchiveTreeAndArchiveCount(@Param("projectId") Long projectId,@Param("nodeId") Long nodeId);
 }

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

@@ -351,5 +351,22 @@
           AND archive_auto_group_id =#{archiveAutoGroupId}
         order by tree_sort asc
     </select>
+    <select id="getArchiveTreeAndArchiveCount" resultType="java.util.Map">
+        SELECT
+            matc1.id as id,
+            matc1.node_name as name,
+            (SELECT COUNT(*)
+             FROM u_archives_auto uaa1
+             WHERE  uaa1.is_deleted =0 and (uaa1.node_id in
+                 (select id from m_archive_tree_contract matc2 WHERE matc2.project_id = #{projectId} and matc2.ancestors like CONCAT('%',matc1.id,'%')) or uaa1.node_id = matc1.id)
+            ) as 'auto',
+            (SELECT COUNT(*)
+             FROM u_archives_auto uaa1
+             WHERE  uaa1.is_deleted =1 and (uaa1.node_id in
+                (select id from m_archive_tree_contract matc2 WHERE matc2.project_id = #{projectId} and matc2.ancestors like CONCAT('%',matc1.id,'%')) or uaa1.node_id = matc1.id)
+            ) as 'deleted',
+            if((SELECT COUNT(*) from m_archive_tree_contract matc WHERE parent_id = matc1.id)=0,false,true) as hasChildren
+        FROM m_archive_tree_contract matc1 WHERE matc1.project_id =#{projectId} and matc1.parent_id = #{nodeId}
+    </select>
 
 </mapper>

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

@@ -92,4 +92,6 @@ public interface IArchiveTreeContractService extends BaseService<ArchiveTreeCont
 
 	void  fillDefaultArchiveAutoInfo(List<ArchiveTreeContract> archiveTreeContracts);
 
+	List<Map<String,Object>> getArchiveTreeAndArchiveCount(Long projectId,Long nodeId);
+
 }

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

@@ -849,10 +849,10 @@ public class ArchiveTreeContractServiceImpl extends BaseServiceImpl<ArchiveTreeC
 		}
 	}
 
-
-
-
-
+	@Override
+	public List<Map<String, Object>> getArchiveTreeAndArchiveCount(Long projectId,Long nodeId) {
+		return baseMapper.getArchiveTreeAndArchiveCount(projectId,nodeId);
+	}
 
 
 }